2014.06.15 20:42简介: 伸展树是一种介于普通二叉搜索树和AVL树之间的,比较平衡的一种二叉搜索树。它不像AVL树那样总是高度平衡,虽然单次操作的就可能耗费O(n)时间,但连续M次基本操作的时间复杂度能做到O(M * log(N)),M当然不能和1太接近。这种复杂度叫做均摊复杂度,英....
分类:
编程语言 时间:
2014-06-17 00:21:20
阅读次数:
363
迷人的伸展树、、、
都是伸展树很裸的操作,没什么技术含量。
标记下放的时候注意一下就好。。。
#include
#include
#include
#include
#include
using namespace std;
#define LL long long
#define maxn 220000
#define mem(a,b) memset(a,b,sizeof(a))
#def...
分类:
其他好文 时间:
2014-06-16 21:27:54
阅读次数:
229
伸展树是那么的迷人,总是让你在希望的时候WA,在绝望的时候AC。。。。。
做这个题没有之前,首先要了解树形结构转线性的做法。
推荐连接:http://blog.csdn.net/lyhypacm/article/details/6734748
本题做法:
对于本题的每一个最外层的盒子建立一颗伸展树。
对于move x y操作:
(1)把x为根的子树切下来。
(2)然后把切下来的子树放...
分类:
其他好文 时间:
2014-06-15 19:10:47
阅读次数:
302
新学的,其实吧,就那么回事....看了几天,splay处理序列问题,真的非常厉害,翻转,插入,删除,线段树实现不了的功能,splay用起来很方便。POJ
3580 SuperMemo这题基本就是检验模板的题,各种操作都有,错了好多次,发现以前写的代码有错了的,数据水点,给水过了,注意pushup。S...
分类:
其他好文 时间:
2014-06-13 14:36:52
阅读次数:
213
这么炫酷的数据结构简直飘逸到不行,竟然在这么狂躁的状态下过了一遍基础题型,略浪费。
强项:在一维的情况下可以完成区间查询,更新,翻转,子区间的增删,确定前驱后即,总是一句话线段树能做的它就能做,线段树不太好做的他也能很方便的实现。
弱项:没有办法向更高维度扩展(反正本渣没有想出来),这也是一个局限吧。代码太长. . . . . 太致命了。
伸展操作:核心操作,通过一系列的旋转将某个节点旋...
分类:
其他好文 时间:
2014-06-07 12:53:50
阅读次数:
210
延迟标记像极了线段书,不再多说。
区间反转在树伸展到位之后,也变成了简单的递归交换左右儿子。
愈发感觉到伸展树简直太漂亮了,伸展操作更是诱惑到不行 ,总之数据结构太有魅力了。
比较简单,就直接上模板了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pr...
分类:
其他好文 时间:
2014-06-05 08:33:14
阅读次数:
190
伸展树概念 伸展树(Splay Tree)是一种二叉排序树,它能在O(log
n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。 (01)
伸展树属于二叉查找树,即它具有和二叉查找树一样的性质:假设x为树中的任意一个结点,x节点包含关键字key,节点x...
分类:
其他好文 时间:
2014-05-18 19:17:30
阅读次数:
225
今天去上了jsp的上机,感觉以前似乎落下一些知识点。但是没事,我相信我会学会的。。。
今天做了两道AC自动机的题目,感觉跟伸展树一样,AC自动机越来越水了。。。
下午为校赛出了两道题目。虎哥哥告诉我,我要出四道题目。今天先出两道,明天再出两道,爽歪歪。
今天也有一些事情让我很不爽,sad,或许影响到了些许的效率。
AC自动机还有不到10个题,打算这周刷完,然后进军下一个知识点。奋斗吧,小少...
分类:
其他好文 时间:
2014-05-15 23:00:38
阅读次数:
567
我感觉伸展树越来越模版了,没想到这么轻易的就过了。。。
把光标位置标记为pos
MOVE:pos++或者pos--
INSERT:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把insert的内容插入到root的右子树的左子树
ROTATE:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把rev[root10]取反
GET:得到光标位置的后...
分类:
其他好文 时间:
2014-04-29 13:31:22
阅读次数:
498
伸展树模版真的好长好长。。。
cut a b c:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后把ch[ch[root][1][0]]拿掉,放在剩下的树的第c个节点下。
flip a b:把第a-1个数伸展到根节点,把第b+1个数伸展到a的右子树,然后翻转ch[ch[root][1][0]];
由于会出现操作两边的情况,所以加了两个-1节点。
注意:
1,输出的时候要注...
分类:
其他好文 时间:
2014-04-27 22:31:19
阅读次数:
295