长链剖分
字面意思,不同于重链剖分,每次选取最长的树链进行剖分,直到剖完为止。其原理和重链剖分相似。建议学习长链剖分前,先学习 重链剖分。
重链剖分能做的,长链剖分都能做(当然不包括找重儿子),长链剖分还能以 \(O(nlogn)-O(1)\) 的优秀复杂度找到 \(k\) 级祖先(当前节点的第 \(k\) 个祖先)。它的概念和重链剖分相似:
- 重子节点(重儿子):表示其子节点中 子树深度最大 的子结点。如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。
- 轻子节点(轻儿子):表示剩余的子结点。
- 重边:从这个结点到重子节点的边。
- 轻边:到其他轻子节点的边。
- 重链:重边首尾衔接构成重链。
以上图片来源于 [OI_WIKI](树链剖分 - OI Wiki (oi-wiki.org))
性质
- 任意一个节点 \(u\) 的 \(k\) 级祖先