毛毛蟲經過及時的變形,最終逃過的一劫,離開了菜媽的菜園。 毛毛蟲經過千山萬水,歷盡千辛萬苦,最後來到了小小的紹興一中的校園裡。
爬啊爬~爬啊爬毛毛蟲爬到了一顆小小的「毛景樹」下面,發現樹上長著他最愛吃的毛毛果~ 「毛景樹」上有n個節點和n-1條樹枝,但節點上是沒有毛毛果的,毛毛果都是長在樹枝上的。但是這棵「毛景樹」有著神奇的魔力,他能改變樹枝上毛毛果的個數:
第一行乙個正整數n。
接下來n-1行,每行三個正整數ui,vi和wi,第i+1行描述第i條樹枝。表示第i條樹枝連線節點ui和節點vi,樹枝上有wi個毛毛果。 接下來是操作和詢問,以「stop」結束。
對於毛毛蟲的每個詢問操作,輸出乙個答案。
過的極其艱難的一題,要注意兩點:
(1)處理邊權類的樹剖的時候要在修改和查詢的時候避開lca,詳細見**。
#includeusingnamespace
std;
const
int maxn=1e5+100
;int
n,m;
struct
e edge[maxn*2
];int
head[maxn];
inttot;
void addedge (int u,int v,int w,int
e_id)
int belong[maxn];//
記錄每條邊的兒子節點
intson[maxn];
intid[maxn];
intfa[maxn];
intcnt;
intdep[maxn];
intsize[maxn];
inttop[maxn];
intw[maxn];
intwt[maxn];
struct
node segtree[maxn*4
];void build (int i,int l,int
r)
int mid=(l+r)>>1
; build(i
<<1
,l,mid);
build(i
<<1|1,mid+1
,r);
segtree[i].sum=max(segtree[i<<1].sum,segtree[i<<1|1
].sum);
}void spread (int
i)
if(segtree[i].lazy1)
}void update (int i,int l,int r,int val,int
f)
else
}spread(i);
int mid=(segtree[i].l+segtree[i].r)>>1
;
if (l<=mid)
update(i
<<1
,l,r,val,f);
if (r>mid)
update(i
<<1|1
,l,r,val,f);
segtree[i].sum=max(segtree[i<<1].sum,segtree[i<<1|1
].sum);
}int query (int i,int l,int
r) int qrange (int x,int
y)
if (dep[x]>dep[y]) swap(x,y);
ans=max(ans,query(1,id[x]+1
,id[y]));
return
ans;
}void uprange (int x,int y,int k,int
f)
if (dep[x]>dep[y]) swap(x,y);
update(
1,id[x]+1
,id[y],k,f);
}int lca (int x,int
y) void dfs1 (int x,int f,int
deep)
}void dfs2 (int x,int
topf) }
intmain ()
dfs1(
1,0,1
); dfs2(
1,1);
build(
1,1,n);
while (1
)
else
if (s=="
cover")
else
if (s=="
add"
)
else
if (s=="
max"
) }
}
P4315 月下「毛景樹」
毛毛蟲經過及時的變形,最終逃過的一劫,離開了菜媽的菜園。毛毛蟲經過千山萬水,歷盡千辛萬苦,最後來到了小小的紹興一中的校園裡。爬啊爬 爬啊爬毛毛蟲爬到了一顆小小的 毛景樹 下面,發現樹上長著他最愛吃的毛毛果 毛景樹 上有n個節點和n 1條樹枝,但節點上是沒有毛毛果的,毛毛果都是長在樹枝上的。但是這棵 ...
P4315 月下「毛景樹」 樹鏈剖分 線段樹
傳送門 樹鏈剖分 線段樹維護的模板題,但要注意的是邊權到點權的轉換以及絕對標記和相對標記的關係。include include include include using namespace std typedef long long ll const int n 1e5 10 struct edg...
題解 P4315 月下「毛景樹」
看原題戳這兒 如題,肯定是樹鏈剖分的題。建議先a掉這道模板題 不會的先看這個 前置知識 鏈式前向星,樹,dfs序,lca,樹形dp,線段樹,樹鏈剖分 一定要先完全學懂,否則不保證這篇題解能完全看懂!先簡化題目 已知一棵包含 n 0 le n le 100000 個結點的樹 連通且無環 每條邊上包含乙...