LomsatGelral

Lomsat gelral

我们首先考虑暴力合并。

暴力就是每次对于一个点 x,暴力地对其子树再做一遍深度优先遍历求解,然后算上自己的答案。这样做的复杂度是 O(n2)

考虑如果将每个点对应的子树的答案存储下来是不可能的,但是每次最后更改计数数组都可以有一棵子树可以保留下来。

我们使用启发式合并,保留子树大小最大的子树。这样每次合并都只清空轻儿子,保留重儿子的信息。

我们考虑证明一下复杂度,每个点反复清空,当且仅当它经过了轻边,此时由于轻边连接的不是重儿子,所以子树大小至少翻倍,那么至多合并 logn 次。(证明与树链剖分类似)

复杂度 O(nlogn)

code

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17605993.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起