樹上差分:松鼠的新家+最大流usaco+運輸計劃

2中樹上差分:邊拆分和點差分

邊差分:對於x,y之間所有的路徑都加上c,相當於把這條路徑拆成2條路徑:一條從x到lca,另一條從lca到y,注意因爲是邊的差分,所以這2條路徑是沒有重疊的。

即c[x]++,c[y]++,c[lca(x,y)]-=2;

點差分:也是拆分成2條路徑,一條是從x到lca,另一條是從y到lca的兒子(同時也是y的祖先),這樣就可以保證2條路徑沒有重疊。

即c[x]++,c[y]++,c[lca(x,y)]--,c[fa(lca)]--;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章