长链剖分学习笔记

一些定义

重子节点表示其子节点中子树深度最大的子结点

如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。

轻子节点表示剩余的子结点

从这个结点到重子节点的边重边

到其他轻子节点的边为 轻边

若干条首尾衔接的重边构成重链

把落单的结点也当作重链,那么整棵树就被剖分成若干条重链。

如图(这种剖分方式既可以看成重链剖分也可以看成长链剖分):

HLD

一些性质

性质 1

从一个节点到根的路径的轻边切换条数是\(\sqrt{n}\)级别的

证明:

(我感觉有点不是很沾边?)

长链剖分 - sun123zxy - 博客园 (cnblogs.com)

「算法笔记」长链剖分 - maoyiting - 博客园 (cnblogs.com)

感觉↑这个要有道理一点?

长链剖分学习笔记 - Ynoi - 洛谷博客 (luogu.com.cn)

这个↑比较严谨

性质2

对于树上任意一点\(x\),它的\(K\)级祖先\(y\)所在长链的长度一定\(≥K\)

证明:

①当\(x\)\(y\)所在的长链中,\(x\to y\)的距离都为\(K\)了,那么\(y\)所在长链的长度肯定\(≥K\)

②当\(x\)不在\(y\)所在的长链中

我们首先考虑为什么\(x\)不在长链中,肯定是因为有其他儿子的深度更大

所以肯定存在一些长链上的节点到\(y\)的距离\(≥K\),因此\(y\)所在长链的长度\(≥K\)

证毕。(这不是显然吗)

求解

其实跟重链剖分很像

就把大小\(size\)改成深度\(dep\)就🆗力

树链剖分详讲(重链剖分+长链剖分) - AcWing

总感觉阅读体验不是很好

长链剖分学习笔记 - 小蒟蒻yyb - 博客园 (cnblogs.com)

看成yb了淦!黑死人

树链剖分 - OI Wiki (oi-wiki.org)

「算法笔记」长链剖分 - maoyiting - 博客园 (cnblogs.com)

[长链剖分总结 - 租酥雨 - 博客园 (cnblogs.com)

posted @ 2023-04-20 16:23  _Youngxy  阅读(45)  评论(0)    收藏  举报