BuringStraw

BuringStraw

樹上差分

樹上差分#

描述#

把差分陣列(不是前綴和)放到一棵樹上,使某個節點的權值等於其本身加上所有子節點的差分的那個值的和。(語無倫次)

差分陣列的作用是使區間修改的時間複雜度更低,對應到樹上,就可以應用到類似於這樣的情況:

樹

點的差分#

給 A—B 的簡單路徑上所有的節點的權值增加 1。

可以把這條路徑拆成兩條鏈,分別為 A 到 L(A 和 B 的 LCA)和 B 到 L。

把 A 與 B 的標記增加 1,那麼 A 到 L 和 B 到 L 對應的值在統計時都會增加 1,而 L 的值總共增加了 2,所以再把 L 的標記減 1。L 的父親節點,類似修改差分陣列的區間時區間之後的那個點,將其標記減 1。

邊的差分#

把邊權轉化到下邊的點上。

所以這次 L 點的標記不能動,那麼,區間每增加 1,L 點的標記要減去 2.

板子題#

洛谷 P3128 最大流 Max Flow

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。