
splay
文章平均质量分 58
SaltyFishWei
这个作者很懒,什么都没留下…
展开
-
HDU3487 Play with Chain(Splay)
有一个数列(1,2,3......,n),有两种操作CUT a b c 把数列[a,b]截去,插入截去后的数列的c号元素后面FLIP a b 把数列[a,b]翻转splay水过#include#include#define MAXN 300010int ans[MAXN],cnt,n,m,root,tot,ch[MAXN][2],sz[MAXN],fa[MAXN],v[MAX原创 2016-03-09 20:57:36 · 463 阅读 · 0 评论 -
HDU1890 Robotic Sort(Splay)
有一个长度为n(1≤n≤105)n(1 \leq n \leq 10^5)的排列,排列中的每个元素pi(1≤pi≤n)pi(1 \leq pi \leq n)。每次操作翻转第i个元素和第i大元素之间所有的数,并且输出第i大元素的位置。 刚开始看见又是区间翻转又是求第k大就晕了- -,网上搜了搜题解+自己理会发现:用原数组的下标来建树,每次把排序后的第i个元素对应的原数组的下标旋转到根,i+sz[c原创 2016-03-10 17:50:04 · 368 阅读 · 0 评论 -
POJ3580 SuperMemo(Splay)
splay终极题目- -。。。 给定一个初始的排列(A1,A2,A3...An)(n≤105)(A_{1},A_{2},A_{3}...A_{n})(n \leq 10^5),还有m(m≤105)m(m\leq 10^5)次操作。 ADD x y D: 把数列标号[x,y]的每个元素都加上S REVERSE x y: 翻转区间[x,y] REVOLVE x y T: 把区间[x,y]后移T原创 2016-03-11 09:46:00 · 286 阅读 · 0 评论 -
BZOJ1500 [NOI2005]维修数列(Splay)
题意不多说。这大概算是splay的终极题目了吧,和poj3580差不多。 插入:把左端点前一个节点和右端点后一个节点旋转到根和根的右儿子,然后像建树那样构造右儿子的左子树。 删除:同上的旋转方式。删掉根节点的右儿子的左子树。虽然同时存在的节点不超过500 000个,但是不停的插入删除会使节点编号x变得非常大,造成RE;因此需要内存回收,开一个栈来保存删掉的所有节点编号。 修改:同上的旋转方式。原创 2016-04-08 11:38:29 · 530 阅读 · 0 评论