演算法隨筆——樹上問題若干

codwarm發表於2024-09-01

樹上差分

即在樹上進行差分。

例題 1

P3128 [USACO15DEC] Max Flow P

題意:對樹上一條路徑 + 1,求最大點權值。

做法

設操作 s -> t 路徑,則設差分陣列 \(d\)
操作為

d[s]++,d[t]++,d[lca(s,t)]--,d[fa[lca(s,t)]]--;

操作完後,每個點真實權值為其子樹 \(d\) 的和。

相關文章