学习笔记-动态树Link-Cut-Tree
--少年你有梦想吗? --少年你听说过安利吗? 安利一个集训队讲解: http://wenku.baidu.com/view/75906f160b4e767f5acfcedb 关于动态树问题,有多种方法。。LCT是其中比较常用的方法; LCT这种东西根本没用----by ShallWe ----你真的确定吗(charge) 我之前非常确定。 。。。。。。。。。 LCT的话,比较类似树链剖分,有类似轻重链的东东Preferred Path。不过链剖是用线段树维护,而LCT应用伸展树Splay维护。按深度维护。 动态树可以维护一个动态的森林,支持树的合并(两棵合并成一棵),分离(把某个点和它父亲点分开),动态LCA,树上的点权和边权维护、查询(单点或者树上的一条路径),换根。 具体的几个操作: Access操作: 大体上就是访问这个点。 是所有操作的基础,假设调用了过程ACCESS(v),那么从点v到根结点的路径就成为一条新的PreferredPath.如果路径上经过的某个结点u并不是它的父亲parent(u)的Pre-ferredChild,那么由于parent(u)的PreferredChild会变为u,原本包含parent(u)的PreferredPath将不再包含结点parent(u)及其之上的部分. 时间复杂度是均摊的logn证明详见开头的论文。。 Find_Root操作: