- 动态树,可删边加边,树剖功能真包含于LCT
- Splay操作无论怎么旋,始终保持key的中序遍历,lct就是将深度当作key,用splay来维护树的形态
- splay的翻转操作:将左子树和右子树交换,并打上标记。交换两子树意味着所有比它大的数都比它小,小者同理。本应所有节点执行此操作,因此打上标记。
- lct对于答案的维护即是利用了splay的区间信息维护能力(splay首先维护的是原树上的链,其次key代表深度,所以点值来源:
makeroot(x)旋上一点x,即指定x;access(y)在指定x的基础上打通x-y的路径并生成一颗平衡树;splay(y)旋上y,此时利用
平衡树自带的update,上旋的同时更新所有点值,使得点值等于子树所有点值的总信息(在模板题中是疑惑和),即可得到答案。
5 .关于cut的三个条件判断,是因为不仅y要在x的splay子树中,还要中序遍历中不存在其他中间点(中序遍历无中间点表示深度相差1,才表示有相邻边)
来源:CSDN
作者:xagadrd
链接:https://blog.csdn.net/qq_42725189/article/details/104067437