树上差分

本质上还是差分,但是实现形式上差了不少。

树上差分的本质就是根节点的权值等于子树的权值和,从而实现修改一个节点就影响整个包含这个点的节点,这种影响是向上的。设 \(a\) 原数组,\(c\) 为差分数组那么关系就是 \(c_{u} = a_{u} - \sum {c_{son}}\)

\(u\)\(x\),就相当于同时给 \(u\) 的所有祖先都加上 \(x\),这就是树上差分。

设树上有两点 \(u,v\),LCA 为 \(a\),如果要给 \(u,v\) 两点之间加上 \(x\),就可以 d[u] += x, d[v] += x, d[a] -= x, d[fa[a]] -= x。至于为什么,请观察下图:![[Pasted image 20260308164342.png|350]]

树上差分详解 - TEoS - 博客园 这个讲的好

posted @ 2026-03-08 16:45  blind5883  阅读(3)  评论(0)    收藏  举报