线段树合并
posted on 2024-11-11 02:01:34 | under | source
线段树合并
用于合并两棵线段树。定义 merge(x, y) 作用是合并线段树 x,y 并返回合并后的根,然后一直递归即可,注意合并叶子信息。
假设有 \(n\) 个节点,线段树层数为 \(\log V\),那么将这些节点全合并起来的复杂度是 \(O(n\log V)\)。证明:一次合并的复杂度是两棵树相同节点的数量,不妨认为是相同节点其一导致了复杂度,那么每个节点只会导致 \(1\) 次复杂度,总节点个数 \(O(n\log V)\),故复杂度 \(O(n\log V)\)。
可以用于维护树形 \(\rm dp\) 之类的。注意 pushdown 有时候用不了因为要新建节点(比方说你维护的是前或后缀信息之类的),那么就要标记永久化了。

浙公网安备 33010602011771号