Lct 动态链接树

通过树链剖分能了解轻重边 Acdreamer 的博客
http://blog.csdn.net/acdreamers/article/details/10591443

然后看杨哲大大的论文,能了解轻重边的复杂度
http://wenku.baidu.com/link?url=4iW8ToWMU5iDC04myUxjT-fGZ5aKYqatHgvXnPIDH9OEY9f1VpuonABlgOPPA8M4pHCxrMuCbLtTt4wOfObeWOb5fDjLPQzToV0z5-obWX7

然后去看人人网博客的势能分析
http://blog.renren.com/share/353190745/12936065071

以及查阅势能分析之类的均摊分析资料
http://www.cnblogs.com/hezhihao/p/4185816.html

回过头看杨哲大大splay的势能分析和lct中access总的splay势能分析
然后看论文的几个操作

看博客的u,v路径求和图解(这个blog)里面有时候点会标反比如H,I 另外u,v Access(u) 首先会对u进行splay 旋转 但是旋转始终是网深度小的点旋转所以,提取的始终是到根的路径,然后又会断开右子树,深度大的点的路径,有可能担心深度相同的点被跟新到父节点上,也就是兄弟节点, 但是原来的偏爱子节点的PreferedPath或者说重边都会断开所以不会影响到这条链上各个节点的update,就算当前子节点有左孩子也是原来的父节点深度较小被旋转到了左侧,所以这里access操作里面只要断开要经过的点的原来的preferedpath,以及自己右侧的preferedpath也就是深度深的路径就行了,如果要经过的点就在父节点的preferedpath上面那么肯定已经就在同一棵splay的Auxiliary Tree上了,直接旋转跟新就是了,然后进行换根,这时候这就是真的换根了,而不是splay的Auxiliary Tree里旋转到根,那么是真的根就要调整深度,左边的深度都要大于根,因为右子树是空的,preferedpath断掉了,所以交换左右子树打标记,深度就都比根大了,然后把另一个点Access上来,这时候会把原来的lca之上的部分的preferedpath断掉,这时候的根点信息是lca(u,v)因为之前对u换过根了,并不是原来根,当然也可以直接换根,也就是再splay一次v相当于把u,v这条链拉直,从lca中在往上跟新到现在的v,就可以直接从v节点获取信息了。
http://www.mobile-open.com/2016/930262.html

看换根的博客图解
http://blog.csdn.net/jeremygjy/article/details/51078087

然后拿hdu oj 4010 对照别人的练手 改动了下我,把提取u,v路径都直接写成了两次换根ChangeRoot(u),ChangeRoot(v),其实只要Access(u),Splay(u),然后Access(v)然后直接处理根就可以了,不过还要找根,就直接换了
http://blog.csdn.net/d891320478/article/details/9181385

这中间又巩固了下splay的3个旋转,中序遍历性质,查找rank删除节点

原文地址:https://www.cnblogs.com/HaibaraAi/p/6368289.html