LCT动态树学习笔记--个人理解

LCT,即link-cut-tree,用于解决动态树这一类问题,思想上和树链剖分相近,树链剖分通过重链剖分将树划分为轻重链,而之后一般通过线段树进行维护。而LCT则也将树分为两种边(姑且也称作轻重边,反正是个名字而已),但并不通过子节点sz划分,而是一种相对的划分。其通过splay维护当前一棵树中的重链(即一棵splay里所有节点是某一棵树的某一重链),而轻链用于连接一棵树里的splay。splay中以深度为关键字维护重链中的节点,左节点深度比当前小,右节点大。因为splay的特殊性质(也不知道哪里特殊,但其他平衡树反正就是不行)所以能灵活的处理链相对关系间的变化,实现换根,连接树,切断树,翻转,维护各种信息等等。

猜你喜欢

转载自blog.csdn.net/caoyang1123/article/details/81055934
今日推荐