
平衡树
文章平均质量分 80
SaltyFishWei
这个作者很懒,什么都没留下…
展开
-
AVL树学习笔记&模板
AVL树是一种平衡二叉查找树,利用高度严格维护树的平衡,因此,即便是在最坏的情况下各项操作的时间复杂度都是O(logN),相比splay的优点是常数小,但是功能没有splay那么强大。平衡二叉树(Balanced Binary Tree):由阿德尔森一维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。 如果T是一棵非空的二叉搜索树,原创 2015-11-21 17:07:33 · 1609 阅读 · 0 评论 -
POJ2892 HDU1540 Tunnel Warfare(Splay)
有n个村庄连成一排,m个指令。D x为破坏村庄x,Q x为查询与x联通的村庄的个数,R为恢复上一个被破坏的村庄。 用一棵splay树,每次破坏一个村庄,就插入它的编号;查询的时候找到前驱后继(当然,如果该村庄已经被破坏,直接输出0就好了);恢复村庄时再删除这个节点。注意为了方便查询,我们先插入0和n+1。 #include #include #include #define MAXN 5001原创 2015-11-21 15:01:18 · 397 阅读 · 0 评论 -
POJ2985 The k-th Largest Group(Splay)
有n组猫,m种操作。初始的时候每组猫有一只,有两种操作,可以把两组猫合并为一组,或者查询猫数第k多的组。 对于合并猫我们开一个并查集,检查那些已经在一个集合中的猫。首先在splay树中插入每组猫的数,当合并的时候,就从树中删去那两组猫,在插入它们的和。为了方便删除,在初始化的时候要插入0和n+1两个节点。 #include #include #define MAXN 200010 void G原创 2015-11-21 16:09:10 · 392 阅读 · 0 评论 -
UVA11922 Permutation Transformer(Splay)
有一个(1,2,3...n)的排列,给出m次操作,每次操作翻转区间[l,r],并且把翻转后的区间移动到排列末端,输出最后的排列。 splay的区间翻转操作,第一次写。 开始的时候插入两个虚拟节点0和n+1,这样原本的操作区间[l-1,r+1]就变成了[l,r+2];采用类似线段树的lazy标记,表示该子树表示的区间是否翻转;向下更新的时候下传懒标记,交换子树的编号即可。注意一下输出的时候需要下原创 2016-03-09 18:52:40 · 365 阅读 · 0 评论