
平衡树
verdin黄大锤
afo啦!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷 3391 文艺平衡树 splay模板
题目:文艺平衡树 资料: yyb大佬的讲解 zcy大佬的代码 思路: splay模板。 要加两个虚点1、n+2,原序列是 [2,n+1]。 一直在想为什么翻转不会破坏bst的性质,后来才发现这里的bst是对数的编号来说的,与值无关。 寻找一段区间,只需要把它的前驱旋转到根,后继旋转到根的右儿子,此时根的右儿子的左子树就是这段区间。 要用lazy tag优化。 ...原创 2018-03-28 13:22:29 · 359 阅读 · 0 评论 -
洛谷 3369 普通平衡树 splay模板
题目:普通平衡树 参考: yyb大佬的代码 luogu大佬的题解 代码: #include<bits/stdc++.h> using namespace std; #define maxn 100000 #define inf (1<<30) struct Node { int val; int cnt; int fa,ch[2]; in...原创 2018-04-01 22:14:22 · 360 阅读 · 0 评论 -
UVA11922 Permutation Transformer
题目:Permutation Transformer 思路:splay分裂、合并、区间翻转模板 代码: using namespace std; #define maxn 100000 struct Node { int fa,ch[2]; int sz,lzy; void init() { fa=ch[0]=ch[1]=lzy=0; ...原创 2018-08-06 18:32:44 · 235 阅读 · 0 评论 -
洛谷 P2286 [HNOI2004]宠物收养场
题目:宠物收养场 思路: 由于同一时间不可能同时有人和狗,所以只需要建立一棵平衡树,赋予一个属性代表人或狗。 然后对于领养操作,查找前驱后继,取差的绝对值最小,删除即可。 代码: #include<bits/stdc++.h> using namespace std; #define maxn 80000 #define read(x) scanf("%d",&x) #def...原创 2019-03-12 21:39:18 · 227 阅读 · 0 评论