
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 · 1254 阅读 · 5 评论 -
hdu-1890-Robotic Sort-splay tree-区间翻转
伸展树对于区间的翻转操作尤其的方便。 对于区间翻转的时候,同样使用lazy标记。 但是在splay操作的时候注意要先更新孩子,然后在判断改左旋还是右旋。 #include #include #include #include using namespace std; #define maxn 110000 #define mem(a,b) memset(a,b,sizeof(a)) stru原创 2014-04-25 21:45:33 · 2149 阅读 · 0 评论 -
hdu-3436-Queue-jumpers-伸展树
5KB的代码。。。250+行。。。就错在一个离散化上,郁闷了好久。。。 RANK就是找出第K位是多少 TOP是将某个人移至队首,对中间区间没有影响 QUERY是某个人的位置 则: TOP:将目标点旋转至根部,然后删除,最后插入到队首 RANK:通过size查找即可,注意每个点的size是区间长度 QUERY:把该点旋转至根部,左子树的大小+1便是结果原创 2014-04-27 19:53:46 · 1711 阅读 · 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 · 1339 阅读 · 0 评论 -
[AHOI2006]文本编辑器editor (Splay tree)
我感觉伸展树越来越模版了,没想到这么轻易的就过了。。。 把光标位置标记为pos MOVE:pos++或者pos-- INSERT:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把insert的内容插入到root的右子树的左子树 ROTATE:把光标旋转至根部,然后把光标后一个字母旋转至根的右子树,然后把rev[root10]取反 GET:得到光标位置的后原创 2014-04-28 14:29:12 · 1483 阅读 · 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 · 1370 阅读 · 0 评论 -
poj-3481-Double Queue-splay树的水题
很水的splay树。 会简单的操作即可。。。 #include #include #include #include #include using 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 · 2248 阅读 · 0 评论 -
hdu-2475-Box-splay
伸展树是那么的迷人,总是让你在希望的时候WA,在绝望的时候AC。。。。。 做这个题没有之前,首先要了解树形结构转线性的做法。 推荐连接:http://blog.youkuaiyun.com/lyhypacm/article/details/6734748 本题做法: 对于本题的每一个最外层的盒子建立一颗伸展树。 对于move x y操作: (1)把x为根的子树切下来。 (2)然后把切下来的子树放原创 2014-06-12 22:40:55 · 1931 阅读 · 0 评论 -
poj-3580-SuperMemo-splay
迷人的伸展树、、、 都是伸展树很裸的操作,没什么技术含量。 标记下放的时候注意一下就好。。。 #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-15 20:34:10 · 1227 阅读 · 0 评论