splay
文章平均质量分 83
青竹梦
在你没有尽全力之前,永远不知道最强的自己有多强!!!
展开
-
poj-3468-A Simple Problem with Integers-splay树
原本应该是线段树板刷的题目,现在用splay tree来做一下。就当练练手。建立初始树的时候按照顺序建立的二叉树。每个节点存储的信息:int pre[maxn]; 当前节点的前驱int ch[maxn][2];当前节点的左右子树int val[maxn];当前节点的值int size[maxn];当前节点的子树的节点个数int add[maxn];当前节点的子树原创 2014-04-25 13:32:20 · 1231 阅读 · 5 评论 -
hdu-1890-Robotic Sort-splay tree-区间翻转
伸展树对于区间的翻转操作尤其的方便。对于区间翻转的时候,同样使用lazy标记。但是在splay操作的时候注意要先更新孩子,然后在判断改左旋还是右旋。#include#include#include#includeusing namespace std;#define maxn 110000#define mem(a,b) memset(a,b,sizeof(a))stru原创 2014-04-25 21:45:33 · 2120 阅读 · 0 评论 -
hdu-3436-Queue-jumpers-伸展树
5KB的代码。。。250+行。。。就错在一个离散化上,郁闷了好久。。。RANK就是找出第K位是多少TOP是将某个人移至队首,对中间区间没有影响QUERY是某个人的位置则:TOP:将目标点旋转至根部,然后删除,最后插入到队首RANK:通过size查找即可,注意每个点的size是区间长度QUERY:把该点旋转至根部,左子树的大小+1便是结果原创 2014-04-27 19:53:46 · 1673 阅读 · 1 评论 -
hdu-3487-Play with Chain (Splay tree)
伸展树模版真的好长好长。。。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:11:16 · 1300 阅读 · 0 评论 -
[AHOI2006]文本编辑器editor (Splay tree)
我感觉伸展树越来越模版了,没想到这么轻易的就过了。。。把光标位置标记为posMOVE:pos++或者pos--INSERT:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把insert的内容插入到root的右子树的左子树ROTATE:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把rev[root10]取反GET:得到光标位置的后原创 2014-04-28 14:29:12 · 1451 阅读 · 0 评论 -
hdu-4453-Looploop-splay
真的被这道题目恶心到了。。。281行代码。。。比一个模拟题还费事。。。为了方便起见,在数列的前面和后面都加一个0点。add x :把第k2+2个点旋转至root1.然后sum[root10]+=x;reverse:把第k1+2个点旋转至root1.然后rev[root10]^=1; insert x:得到第2个点,然后在第2个点之后插入x。 delete :把第1个点旋原创 2014-06-12 15:17:29 · 1340 阅读 · 0 评论 -
poj-3481-Double Queue-splay树的水题
很水的splay树。会简单的操作即可。。。#include#include#include#include#includeusing namespace std;#define maxn 1100000#define mem(a,b) memset(a,b,sizeof(a))#define root10 ch[ch[root][1]][0]#define root1 c原创 2014-06-11 21:09:26 · 2216 阅读 · 0 评论 -
hdu-2475-Box-splay
伸展树是那么的迷人,总是让你在希望的时候WA,在绝望的时候AC。。。。。做这个题没有之前,首先要了解树形结构转线性的做法。推荐连接:http://blog.csdn.net/lyhypacm/article/details/6734748本题做法:对于本题的每一个最外层的盒子建立一颗伸展树。对于move x y操作:(1)把x为根的子树切下来。(2)然后把切下来的子树放原创 2014-06-12 22:40:55 · 1909 阅读 · 0 评论 -
poj-3580-SuperMemo-splay
迷人的伸展树、、、都是伸展树很裸的操作,没什么技术含量。标记下放的时候注意一下就好。。。#include#include#include#include#includeusing namespace std;#define LL long long#define maxn 220000#define mem(a,b) memset(a,b,sizeof(a))#def原创 2014-06-15 20:34:10 · 1201 阅读 · 0 评论