平衡树 平衡树有AVL树、红黑树、2-3树、2-3-4树 AVL树 AVL树是最早的一种平衡树,它以发明者的名字命名。 特征 在AVL树中节点的左子树和右子树的高度差不会大于1 实现 在AVL树中每个节点都存储着一个额外的数据,它的左子树和右子树的高度差,这个差值不能大于1。插入一个元素后,检查该元 ...
分类:
其他好文 时间:
2019-01-03 17:25:17
阅读次数:
194
题目描述 题解: 看到网上几乎全是树套树, 我就写了个整体二分。 其中操作1,2,3一般整体二分都能做到。 对于前驱,我们只需要在线段树中多维护区间最大值即可; 对于后继…… 通通取反后再跑一遍查询前驱即可。 然后迷之卡空间。 最后迷之卡过。 代码: ...
分类:
其他好文 时间:
2018-12-31 11:22:14
阅读次数:
187
"传送门" 这道题的做法……我学的是最经典的线段树套平衡树。 因为发现其实这题的题目描述和普通平衡树非常的相似……只是这次是在给定的区间中。所以我们能想象到用线段树维护区间,然后每个线段树的节点都是一颗平衡树,用于维护区间内信息。 具体操作的实现办法: 1.查询k在区间内的排名:在给定的区间的每一个 ...
分类:
其他好文 时间:
2018-12-29 01:10:26
阅读次数:
241
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #include<ctime> #include<climits> using namespace std; inlin ...
分类:
其他好文 时间:
2018-12-28 14:05:16
阅读次数:
200
文艺平衡树 cpp include include define new_Node(t,s,v,a,b) (&( st[cnt++]=Node(t,s,v,a,b))) define update(now) if(now left size)now size=now left size+now ri ...
分类:
其他好文 时间:
2018-12-25 22:53:01
阅读次数:
163
看起来整个题解区都没有一个leafy tree的题解,那我就来贡献一个吧 调了一个晚上的心血啊 下面是合并与分裂操作(文艺平衡树) 这是……树套树,也就是二逼平衡树qwq: include include define ls tree[node].l define rs tree[node].r d ...
分类:
其他好文 时间:
2018-12-25 20:07:34
阅读次数:
111
#include using namespace std; const int INF=0x3f3f3f3f; struct node{ int lc,rc,fa,size,v; }a[100004]; int n,cnt=0,rt=0; inline void pushup(int k){ a[k... ...
分类:
其他好文 时间:
2018-12-23 17:54:24
阅读次数:
134
寻宝游戏 bzoj-3991 SDOI-2015 题目大意:题目链接。 注释:略。 想法:我们发现如果给定了一些点有宝物的话那么答案就是树链的并。 树链的并的求法就是把所有点按照$dfs$序排序然后相加再减去相邻之间的$lca$。 故此我们按照$dfs$序维护一个平衡树。 每次往里插入节点即可。 实 ...
分类:
其他好文 时间:
2018-12-23 12:50:38
阅读次数:
159
题目大意: 现在有n个操作和一个最低限度m $I$命令$I\ k$新建一个工资档案,初始工资为k。 $A$命令$A\ k $把每位员工的工资加上k $S$命令$S\ k $把每位员工的工资扣除k $F$命令$ F\ k$查询第k多的工资 (如果当前的员工总数不够k,就输出$ 1$) 其中$n \le ...
分类:
其他好文 时间:
2018-12-22 14:52:01
阅读次数:
169
题意 给出一个长为$n$序列$[1,2,...,n]$,$m$次操作,每次指定一段区间$[l,r]$,将这段区间翻转,求最终序列 题解 虽然标题是$Splay$,但是我要用$FHQ\ Treap$,考虑先将$[l,r]$这段区间$split$出来($k$即为这段区间) 然后再将这段区间打一个翻转标记 ...
分类:
其他好文 时间:
2018-12-22 11:46:21
阅读次数:
208