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删除节点
Lct 动态链接树的更多相关文章
- hdu 4010 Lct动态链接树
#pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include & ...
- BZOJ 3510 - 首都 「 $LCT$ 动态维护树的重心」
这题 FlashHu 的优化思路值得借鉴 前置引理 树中所有点到某个点的距离和中,到重心的距离和是最小的. 把两棵树通过某一点相连得到一颗新的树,新的树的重心必然在连接原来两棵树重心的路径上. 一棵树 ...
- 【BZOJ4025】二分图(LCT动态维护图连通性)
点此看题面 大致题意: 给你一张图以及每条边的出现时间和消失时间,让你求每个时间段这张图是否是二分图. 二分图性质 二分图有一个比较简单的性质,即二分图中不存在奇环. 于是题目就变成了:让你求每个时间 ...
- LuoguP2617 Dynamic Rankings (动态主席树学习理解)
题目地址 题目链接 题解 动态主席树的板子题.动态主席树其实和静态的有很大差别,虽然同样是n个根,但是节点并不能共用,每个根节点表示bit上的一段区间. 所以其实是个树套树的东西来着,外层是bit,内 ...
- 动态主席树【带修改】&& 例题 Dynamic Rankings ZOJ - 2112
参考链接:https://blog.csdn.net/WilliamSun0122/article/details/77885781 一.动态主席树介绍 动态主席树与静态主席树的不同在于:静态主席树不 ...
- Mach-O 的动态链接(Lazy Bind 机制)
➠更多技术干货请戳:听云博客 动态链接 要解决空间浪费和更新困难这两个问题最简单的方法就是把程序的模块相互分割开来,形成独立的文件,而不再将它们静态的链接在一起.简单地讲,就是不对那些组成程序的目标文 ...
- 原创 C++应用程序在Windows下的编译、链接(四)动态链接
4动态链接 4.1概述 在静态链接阶段,链接器为PE文件生成了导入表,导出表,符号表,并调整了Call指令后面的操作数,在程序调用的时候,能够直接地或者间接地定位到IAT中的某个位置,在PE文件中,该 ...
- ELF动态链接
为什么要使用动态链接? 在现代的linux系统中,假设一个普通的程序会使用到c语言静态库至少1MB以上,那么,如果我们的机器运行100个这样的程序,就用浪费近100MB的内存:如果磁盘有2000个这样 ...
- Delphi之DLL知识学习2---静态链接和动态链接
静态连接 静态链接是指Delphi 编译器把要调用的函数和过程编译成可执行代码.函数的代码可存留在应用程序的 .dpr文件或一单元中.当链接用户的应用程序时,这些函数与过程便成为最终的可执行文件的一部 ...
随机推荐
- Chrome太占内存?试试这个
" The Great Suspender" 是一个免费的开源 Google Chrome 扩展程序,适用于那些发现chrome占用过多系统资源或经常遭受chrome崩溃的人. 一 ...
- javascript函数的笔记
1.函数的概念 封装一段可以被重复调用执行的代码块来实现大量代码的重复使用 2.函数的使用分为两步:声明函数 和 调用函数 3.声明函数的关键字全部是小写 4.函数名一 ...
- linux系统中SSH免密设置报错
执行 ssh-add ~/.ssh/msi_rsa 时报下面错误 Could not open a connection to your authentication agent. 解决办法: 执行命 ...
- JS中splice方法的使用
在js中,arr.splice(str)方法是处理数组的利器,利用它可以实现在指定位置删除.替换.插入指定数量的元素. 其语法为: arr.splice(index[, deleteCount, e ...
- 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
本文为霍格沃兹测试学院学员学习笔记. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下十个部分,供大家参考.如有错误的地方,欢迎 ...
- Spring quartz中取得ServletContext
在开发javaWeb定时任务的时候,有些处理要取得应用的相对路径,这就需要用到ServletContext取得到这个路径 解决思路是在web应用启动时,把ServletContext提前注入到Sche ...
- C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3816 访问. 给定两个句子 A 和 B . (句子是一串由空格分 ...
- Code Review 从失败中总结出来的几个经验
资深的程序员都知道 Code Review 可以对代码质量,代码规范,团队代码能力提升带来很大的提升,还有著名的技术专家"左耳朵耗子"也说过: 我认为没有 Code Review ...
- 手写AOP实现过程
一.手写Aop前基础知识 1.aop是什么? 面向切面编程(AOP):是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行OOP开发时,都是基于对组件(比如类)进行开 ...
- 神经网络实现fashion数据集
import tensorflow as tf import numpy as np fashion=tf.keras.datasets.fashion_mnist (x_train,y_train) ...