首页 > 其他分享 >浅谈树上启发式合并(Dsu on tree)

浅谈树上启发式合并(Dsu on tree)

时间:2023-01-27 15:55:10浏览次数:61  
标签:遍历 浅谈 复杂度 Dsu tree 启发式 mathcal 树上 节点

树上启发式合并

树上启发式合并(Dsu on tree),是一个解决树上离线问题的有力算法,一般的复杂度是 \(\mathcal O(n\log n)\)(假定转移可以 \(\mathcal O(1)\) 解决),时间复杂度相比树上莫队等算法还是很优秀的。

算法流程

离线处理,树上 dfs,在遍历每个节点时算出每个点的答案。

我们可以分两步来处理,第一遍 dfs 先预处理出每个点的所需信息,求出每个点的子树的大小和重儿子(所有儿子中子树节点最多的那个儿子)。

第二遍 dfs 计算答案,先遍历所有的轻儿子,计算答案,遍历后将其对结果的影响清空。之后遍历重儿子,不清空影响。最后再遍历所有轻儿子及该节点本身,合并贡献,得出当前节点的贡献。总的复杂度是 \(\mathcal O(n\log n)\) 的。

复杂度证明

任意节点被遍历到的次数是它到根节点的轻边数 \(+1\),而任意节点到根节点的轻边数都 \(\le \log n\) 的(因为每次合并树的大小至少扩大二倍),所以总的复杂度是 \(\mathcal O(n\log n)\) 的。

例题

参考资料

标签:遍历,浅谈,复杂度,Dsu,tree,启发式,mathcal,树上,节点
From: https://www.cnblogs.com/lnwhl/p/17068955.html

相关文章

  • RTree源代码——C语言实现
    RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中......
  • treemap/treeset 相关 1438
    1438. LongestContinuousSubarrayWithAbsoluteDiffLessThanorEqualtoLimitMedium2790115AddtoListShareGivenanarrayofintegers nums andani......
  • 浅谈线性递推
    线性递推相关常系数齐次线性递推对于一般的递归式,我们有\(\sum\limits_{j=0}^{k}A_{i-j}R_j=0,i\gek\)定义\(S=AR\),则\(S\)的最高次为\(k-1\),小于\(R\)的最高次项\(......
  • Link-Cut Tree 学习笔记
    LinkCutTree是一种用来维护动态树问题的数据结构。其维护的是一个森林,森林中的每个树由若干个Splay组成,每个Splay代表树上的一条链,一个Splay的中序遍历就是那条......
  • 浅谈PHP设计模式的享元模式
    简介:享元模式,属于结构型的设计模式。运用共享技术有效地支持大量细粒度的对象。适用场景:具有相同抽象但是细节不同的场景中。优点:把公共的部分分离为抽象,细节依赖于抽......
  • 浅谈PHP设计模式的中介者模式
    简介:中介者模式,属于行为型的设计模式。用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。......
  • 浅谈PHP设计模式的命令模式
    简介:命令模式:属于行为型的设计模式。将一个请求封装为一个对象,从而是你可用不同的请求对客户端进行参数化。对请求排队或记录请求日志,以及支持可撤销的操作。适用场景:命......
  • 浅谈SOFAJRaft中的ShutdownHook
    Java程序经常会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。JAVA中的ShutdownHook提供了比较好的方案。而在SOFAJ......
  • 浅谈PHP设计模式的组合模式
    简介:组合模式,属于结构型的设计模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式分两种状态......
  • 32. CF-Tree Queries
    题目链接给一棵树,多次询问,每次给出若干个点,问是否存在从从根到叶的一条路径满足这些点到这条路径的距离均不超过\(1\)。容易想到,只需要dfs一遍预处理一下深度之类的信......