LomsatGelral
Lomsat gelral
我们首先考虑暴力合并。
暴力就是每次对于一个点 \(x\),暴力地对其子树再做一遍深度优先遍历求解,然后算上自己的答案。这样做的复杂度是 \(O(n^2)\)。
考虑如果将每个点对应的子树的答案存储下来是不可能的,但是每次最后更改计数数组都可以有一棵子树可以保留下来。
我们使用启发式合并,保留子树大小最大的子树。这样每次合并都只清空轻儿子,保留重儿子的信息。
我们考虑证明一下复杂度,每个点反复清空,当且仅当它经过了轻边,此时由于轻边连接的不是重儿子,所以子树大小至少翻倍,那么至多合并 \(\log n\) 次。(证明与树链剖分类似)
复杂度 \(O(n\log n)\)。

浙公网安备 33010602011771号