模板及讲解
LCT
,也就是Link-Cut Tree
的缩写。它是最常见的一种解决动态树问题的工具。不过说它是树也不准确,因为它维护的可以是一片森林。
实链剖分
将某一个儿子的连边划分为实边,而连向其他子树的边划分为虚边。
区别在于虚实是可以动态变化的,因此要使用更高级、更灵活的Splay
来维护每一条由若干实边连接而成的实链。
LCT维护的对象其实是一个森林。
LCT 性质
1、每一个Splay
维护的是一条从上到下按在原树中深度严格递增的路径,且中序遍历Splay
得到的每个点的深度序列严格递增。
2、每个节点包含且仅包含于一个Splay
中
3、边分为实边和虚边,实边包含在Splay
中,而虚边总是由一棵Splay
指向另一个节点(指向该Splay
中中序遍历最靠前的点在原树中的父亲)。