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