裸Splay区间操作: 内存池+区间加减+区间翻转+插入+删除+维护最值SuperMemoTime Limit:5000MSMemory Limit:65536KTotal Submissions:8552Accepted:2801Case Time Limit:2000MSDescriptionY...
分类:
其他好文 时间:
2014-07-16 23:25:06
阅读次数:
195
很裸的Splay,抄一下CLJ的模板当作复习,debug了一个下午,收获是终于搞懂了以前看这个模板里不懂的内容。以前用这个模板的时候没有看懂为什么get函数返回的前缀要加个引用,经过一下午的debug终于明白,如果加了引用的时候是会被修改到的,删除实际上就是将root->ch[1]->ch[0]置为...
分类:
其他好文 时间:
2014-07-11 12:57:00
阅读次数:
219
原帖 自增树如s5_or所说,是一种思想像Splay的数据结构,每个节点维护一个堆权值,每当询问一个节点时,堆权值++,并返回时维护堆权值为堆的性质。这个树从旋转次数上比Splay小是肯定的,因为Splay旋转次数是logn次,但是这个树不一定,空间复杂度是O(n),接下来分析时间复杂度。 ...
分类:
其他好文 时间:
2014-07-03 20:15:24
阅读次数:
170
基本枚举、贪心、递归、分治、递推、模拟STL(pair、vector、set、map、queue、string、algorithm)构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/Tr...
分类:
其他好文 时间:
2014-07-01 19:09:02
阅读次数:
193
为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用...
分类:
其他好文 时间:
2014-06-30 12:39:53
阅读次数:
257
链接推荐一篇帖子http://blog.csdn.net/lyhypacm/article/details/6734748这题暴力不可行主要是因为这颗树可能极度不平衡,不能用并查集是不能路径压缩,这样时间复杂度是很高的。可以用伸展树主要是因为它的伸展性,每次操作后可以通过伸展使这棵树更好的保持平衡。...
分类:
其他好文 时间:
2014-06-22 10:40:14
阅读次数:
324
链接简单的两种操作,一种删除某段区间,加在第I个点的后面,另一个是翻转区间。都是splay的简单操作。悲剧一:pushdown时候忘记让lz=0悲剧二:删除区间,加在某点之后的时候忘记修改其父亲节点。 1 #include 2 #include 3 #include 4 #include ...
分类:
其他好文 时间:
2014-06-20 16:55:12
阅读次数:
291
链接splay的增删改操作。刚开始对于某段区间首先有了lazy标记时,把其左右孩子给交换了,导致在pushup时又交换了一次而debug了n久。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #...
分类:
其他好文 时间:
2014-06-20 16:53:51
阅读次数:
232
链接操作不少,不过都是一些基本的操作,增删,旋转,逆转,询问最小。注意一点:T 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using names...
分类:
其他好文 时间:
2014-06-20 15:25:14
阅读次数:
214
迷人的伸展树、、、
都是伸展树很裸的操作,没什么技术含量。
标记下放的时候注意一下就好。。。
#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