
splay
文章平均质量分 80
zz_ylolita
这个作者很懒,什么都没留下…
展开
-
bzoj1588[HNOI2002]营业额统计
好裸的题,好坑的数据= =详见讨论版 #include #include #include #include using namespace std; #define MAXN 500010 #define INF 0x7fffffff struct node{ int ch[2],f,v; }tr[MAXN]; int a,tmp,x1,x2,ans; int n,root,t原创 2016-02-03 12:42:51 · 1081 阅读 · 0 评论 -
bzoj1208:[HNOI2004]宠物收养所-splay
这个splay维护的不是下标,维护的是数值,所以每必要记下size 还有各种标记 只要能够插入一个数,删除一个数,找一个不在树中的数的前驱和后继就可以了。 需要想的是这道题并不需要用两个splay或者记下多余的没用掉的宠物或者人,只要用一个splay就好了,因为题目中说了任意时刻宠物店中只有人或者只有宠物,这样轮换着用一个splay就好了orz... 好奇怪,这道题在家里写了一天都是WA,在原创 2016-03-02 19:42:30 · 1012 阅读 · 0 评论 -
bzoj3223: Tyvj 1729 文艺平衡树
splay的经典操作:翻转区间-->交换左右子树,注意打标记降低翻转次数 如何找到要操作的区间[l,r]:将当前排名(size)为l-1 +1 的节点转到根,将当前排名为r+2的节点转到根的右子树的根节点,则根的右子树的根节点的左子树为所求区间,直接打标记就可以了。 注意 1.标记是在每一次访问到一个新的节点是就要pushdown的 2.区分一个节点的排名和这个节点的值:这个节点的排名是它原创 2016-02-03 19:01:53 · 2597 阅读 · 0 评论 -
bzoj1500: [NOI2005]维修数列
splay鼻祖级的题目??(雾。。 Insert:把第pos个数(有哨兵节点)转到root,把第pos+1个数转到root的右儿子,然后对c[]建树然后把这棵树插到root右儿子的左儿子处 Delete:把第pos个数转到root,把第pos+tot+1个数转到root右儿子,删掉root右儿子的左儿子(变成0);注意回收空间,所以还要把这棵子树遍历一边。 Make-Same:像上面原创 2016-02-04 18:32:48 · 573 阅读 · 0 评论