线段树合并

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 有时候用不了因为要新建节点(比方说你维护的是前或后缀信息之类的),那么就要标记永久化了。

posted @ 2026-01-15 08:21  Zwi  阅读(2)  评论(0)    收藏  举报