【Splay 总结】
很多年前学的splay已经忘了?
BZOJ 3729 要用Splay啊哭。。强制在线。。
二叉查找树
二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。
伸展树是二叉查找树的一种改进,与二叉查找树一样,伸展树也具有有序性。
即伸展树中的每一个节点x都满足:该节点左子树中的每一个元素都小于x,而其右子树中的每一个元素都大于x。
与普通二叉查找树不同的是,伸展树可以自我调整,这就要依靠伸展操作Splay(x,S)。
旋转
1.zig :
当目标节点为根节点的左/右节点时,进行单旋转。
2.zig-zag:
当目标节点与父节点和祖父节点构成zig-zag时,进行双旋转。
3.zig-zig:
当目标节点有父节点和祖父节点构成zig-zig时,进行一次zig-zig操作。
单旋转操作效果(以右单旋转为例):
双旋转操作效果:
Zig-zig操作效果:
在Splay tree中,zig-zig操作基本上代替的AVL tree 中的单旋转。
伸展树的基本操作
利用Splay操作,我们可以在伸展树S上进行如下运算:
(1)Find(x,S):判断元素x是否在伸展树S表示的有序集中。
首先,与在二叉查找树中的查找操作一样,在伸展树中查找元素x。如果x
在树中,则再执行Splay(x,S)调整伸展树。
(2)Insert(x,S):将元素x插入伸展树S表示的有序集中。
首先,也与处理普通的二叉查找树一样,将x 插入到伸展树S中的相应位置
上,再执行Splay(x,S)。
(3)Delete(x,S):将元素x从伸展树S所表示的有序集中删除。
首先,用在二叉查找树中查找元素的方法找到x的位置。如果x没有孩子或
只有一个孩子,那么直接将x删去,并通过Splay操作,将x节点的父节点调整
到伸展树的根节点处。否则,则向下查找x的后继y,用y替代x的位置,最后
执行Splay(y,S),将y调整为伸展树的根。
(4)Join(S1,S2):将两个伸展树S1与S2合并成为一个伸展树。其中S1的所
有元素都小于S2的所有元素。
首先,我们找到伸展树S1 中最大的一个元素x,再通过Splay(x,S1)将x 调
整到伸展树S1 的根。然后再将S2 作为x 节点的右子树。这样,就得到了新的
伸展树S。如图所示
(5)Split(x,S):以x 为界,将伸展树S 分离为两棵伸展树S1 和S2,其中S1
中所有元素都小于x,S2中的所有元素都大于x。
首先执行Find(x,S),将元素x 调整为伸展树的根节点,则x 的左子树就是
S1,而右子树为S2。如图所示
除了上面介绍的五种基本操作,伸展树还支持求最大值、求最小值、求前趋、
求后继等多种操作,这些基本操作也都是建立在伸展操作的基础上的。
Splay模板题
[BZOJ3223] Tyvj 1729 文艺平衡树 关于翻转标记
[BZOJ3224] Tyvj 1728 普通平衡树平衡树基本操作
[BZOJ1503] [NOI2004]郁闷的出纳员带+-标记的平衡树
[BZOJ1208] [HNOI2004]宠物收养所
[BZOJ1251] 序列终结者注意标记下放的过程
【Splay 总结】的更多相关文章
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
- [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)
Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义: 文本:由0个或 ...
- splay最终模板
来自wjmzbmr的splay模板 #include<cstdio> #include<iostream> #include<algorithm> using na ...
- bzoj 3506 && bzoj 1552 splay
查最小值,删除,翻转... 显然splay啊... #include<iostream> #include<cstdio> #include<algorithm> ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- 【填坑】bzoj3224 splay裸题
人生第一道splay不出所料是一道裸题,一道水题,一道2k代码都不到的题 #include <cstdio> ,n,p,q; ],c[][],size[],sp[]; void rot(i ...
- BZOJ 1014: [JSOI2008]火星人prefix [splay 二分+hash] 【未完】
1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6243 Solved: 2007[Submit] ...
- BZOJ1500: [NOI2005]维修数列[splay ***]
1500: [NOI2005]维修数列 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 12278 Solved: 3880[Submit][Statu ...
- HDU1890 Robotic Sort[splay 序列]
Robotic Sort Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- BZOJ3223: Tyvj 1729 文艺平衡树 [splay]
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3595 Solved: 2029[Submit][Sta ...
随机推荐
- linux内核文件系统:proc、tmpfs、devfs、sysfs简要介绍
linux内核文件系统:proc.tmpfs.devfs.sysfs proc:虚拟文件系统,在linux系统中被挂载与/proc目录下.里面的文件包含了很多系统信息,比如cpu负载. 内存.网络配置 ...
- R1(上)—R关联规则分析之Arules包详解
Arules包详解 包基本信息 发布日期:2014-12-07 题目:挖掘关联规则和频繁项集 描述:提供了一个表达.处理.分析事务数据和模式(频繁项集合关联规则)的基本框架. URL:http://R ...
- 【NOI2017】游戏 2-sat算法
[题目]LibreOJ [题意]n场游戏,有三种车ABC,给定长度为n的字符串,'a'表示不能选A,'b''c'同理,'x'表示不限,至多d个'x'.有m个限制(i,hi,j,hj)表示如果第i场选择 ...
- 支付宝Android接口4.0以上报错Failure calling remote service
很坑爹的问题,4.0一下没问题,完全按照接口文件写的.网上一查,很多人遇到.最好直接在4.2下调试,看看报错问题,然后度娘. 将RSA文件中的加上“BC”后测试通过...NND PKCS8Encode ...
- [整理] magento搬家
将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除.然后将所有文件制作成一个压缩包,以减少文件体积,方便转移. 将压缩包转移到新的服务器域名指向的文件夹, ...
- Mysql中的primary key 与auto_increment
mysql> create table cc(id int auto_increment); ERROR (): Incorrect table definition; there can be ...
- nvidia tx1使用记录--基本环境搭建
前言 之前有专门写过一篇nvidia tk1使用记录--基本环境搭建,本以为自己有过tk1的经验后,在tx1上搭建和它一样的环境会轻车熟路,结果却是在nvidia tx1上花的时间居然比tk1还多.我 ...
- C语言实现int转换string
#include <stdio.h> #include <stdlib.h> #include <string.h> int string2int(const ch ...
- Integer类实现方式和注意事项
java.lang.Integer类的源代码: //定义一个长度为256的Integer数组 static final Integer[] cache = new Integer[-(-128) + ...
- 服务器或普通PC裸机安装 ESXI6.5
ESXI :安装包 http://pan.baidu.com/s/1c2gM0Xq (包含注册机和其他套件,驱动打包工具) ESXI 6.5 在服务器安装比较方便,一般intel 的网卡都没多大问题, ...