ray 樂忠於旅遊,這次他來到了t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說, t 城中只有n − 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹窄泥濘,令人煩躁。於是,他給每座橋定義乙個愉悅度w,也就是說,ray 經過這座橋會增加w 的愉悅度,這或許是正的也可能是負的。有時,ray 看待同一座橋的心情也會發生改變。現在,ray 想讓你幫他計算從u 景點到v 景點能獲得的總愉悅度。有時,他還想知道某段路上最美麗的橋所提供的最大愉悅度,或是某段路上最糟糕的一座橋提供的最低愉悅度。
input
輸入的第一行包含乙個整數n,表示t 城中的景點個數。景點編號為 0...n − 1。
接下來n − 1 行,每行三個整數u、v 和w,表示有一條u 到v,使 ray 愉悅度增加w 的橋。橋的編號為1...n − 1。|w| <= 1000。
輸入的第n + 1 行包含乙個整數m,表示ray 的運算元目。
接下來有m 行,每行描述了乙個操作,操作有如下五種形式:
c i w,表示ray 對於經過第i 座橋的愉悅度變成了w。
n u v,表示ray 對於經過景點u 到v 的路徑上的每一座橋的愉悅度都變成原來的相反數。
sum u v,表示詢問從景點u 到v 所獲得的總愉悅度。
max u v,表示詢問從景點u 到v 的路徑上的所有橋中某一座橋所提供的最大愉悅度。
min u v,表示詢問從景點u 到v 的路徑上的所有橋中某一座橋所提供的最小愉悅度。
測試資料保證,任意時刻,ray 對於經過每一座橋的愉悅度的絕對值小於等於1000。
對於每乙個詢問(操作s、max 和min),輸出答案。
30 1 1
1 2 2
8sum 0 2
max 0 2
n 0 1
sum 0 2
min 0 2
c 1 3
sum 0 2
max 0 232
1-153
【資料範圍】
一共有10 個資料,對於第i (1 <= i <= 10) 個資料, n = m = i * 2000。
#include #include #include #define maxn 40005
#define inf 20000005
using namespace std;
struct nodee[maxn];
struct keepppq[maxn];
struct fdfdfda[maxn<<1];
int siz[maxn],top[maxn],fa[maxn],son[maxn],num[maxn],fnum[maxn],deep[maxn];
int n,m,cnt,head[maxn];
void addedge(int x,int y,int w)
void dfs_1(int u,int pre,int d)
void insert(int x,int v,int d)
pushdown(x);
insert(x<<1,v,d); insert(x<<1|1,v,d);
pushup(x);
}void modify(int x,int left,int right)
pushdown(x);
modify(x<<1,left,right); modify(x<<1|1,left,right);
pushup(x);
}void change(int u,int v)
fdfdfd query(int x,int left,int right)
; if(left<=a[x].l&&right>=a[x].r) return a[x];
pushdown(x);
fdfdfd temp1=query(x<<1,left,right),temp2=query(x<<1|1,left,right),temp;
temp.sum=temp1.sum+temp2.sum;
temp.maxx=max(temp1.maxx,temp2.maxx); temp.minn=min(temp1.minn,temp2.minn);
return temp;
}int asksum(int u,int v)
int askmax(int u,int v)
int askmin(int u,int v)
int main()
dfs_1(1,0,1); cnt=0; dfs_2(1,1); build(1,1,n);
for(int i=1;iscanf("%d",&m);
while(m--)
return 0;
}
BZOJ 2157 旅遊 樹鏈剖分
ray 樂忠於旅遊,這次他來到了t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹窄泥...
BZOJ2157 旅遊,樹鏈剖分練習
傳送門 寫在前面 模擬賽中ca爺卡我記憶體,暴力100變60 不過還是親學長 畢竟在我初中的時候就是學長 每次做ca爺的題都是高分 思路 迄今做的最爽的樹鏈剖分 被char哥帶著做這道題,結果耗了好久時間調好,這應該是第一次寫邊鏈剖了?與點鏈剖不同的是要處理下邊 深度大的變成入點 然後建樹時,這個入...
BZOJ2157旅遊 樹鏈剖分 線段樹
ray 樂忠於旅遊,這次他來到了t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹窄泥...