前言
长链剖分是很早以前就听(hl666)神仙说过的算法,好像在处理与树上深度有关的问题时非常有用,而且还可以用于优化树形(DP)。
现在为了肝希望而下定决心去学一学。
什么是长链剖分?
其概念可以参考树链剖分(重链剖分)。
根据重链剖分的定义,重节点表示(Size)最大的子节点。
而我们的长链剖分中,长节点表示到叶节点链最长的子节点。
其余部分的定义是与树剖相类似的,因此没什么好讲。
典型应用(1):(O(1))求(k)级祖先
我们借助一个典例,来进一步了解一下长链剖分:【洛谷5903】【模板】树上 k 级祖先。
典型应用(2):优化(DP)
下面给出一道长链剖分优化(DP)的例题:【CF1009F】Dominant Indices。