![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
平衡树
A_Comme_Amour
胜利油田第一机房
展开
-
史上第二详尽的平衡树(Splay)详解
谢鸣:本文来自zyf2000学姐的blog,原题为“史上最详尽的平衡树(splay)讲解与模板”,我在这里拿过来使用,命名为“史上第二详尽的平衡树(Splay)详解”,并加上了一些新的操作.变量声明:f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于权值)...原创 2018-02-26 21:42:37 · 18216 阅读 · 10 评论 -
[BZOJ1588][HNOI2002]营业额统计(平衡树)
题目传送门题解比平衡树模板还要简单的板子题; 就是每次插入一个元素,求其前驱和后继即可,求差累加较小值即可;我们可以事先再平衡树中插入 -inf 和 inf; 注意元素是课重复的,cnt数组就不要用了代码#include <cstdio>#include <cstring>#include <algorithm>using na...原创 2018-03-31 14:16:32 · 357 阅读 · 0 评论 -
[bzoj1861][Zjoi2006]Book书架(平衡树)
题目传送门题解这道题与其他的平衡树是另一种问题,这里的平衡树里面维护的是编号而不是权值。那么就不能用一般的inset 这样平衡树里面的元素就是无序的,我们怎样才能快速查询一个元素的值Top操作:首先找到原来的位置删除,然后把最左边的点旋转到根,在根的左子树上再插入这个元素.Bottom操作:方法同上Insert操作:我更喜欢叫她是Swap操作,把相邻的两个找出来交换值即...原创 2018-04-01 22:10:09 · 274 阅读 · 0 评论 -
[bzoj1503][NOI2004]郁闷的出纳员(平衡树)
题目传送门题解这道题还是比较好的 平衡树第一题,所以代码打的并不熟练 题目要求使用一种支持点的插入、删除,求名次的数据结构,平衡树当然是首选 题目中的加减操作都是对于所有员工的,我们不可能对所有的点进行修改,于是我们在开一个变量delta,用来记录所有的员工的工资的变化量,那么某个员工的实际工资就是x+delta; 然而我们考虑新加入的员工,对她加上历史的delta显然是不合适...原创 2018-03-27 20:40:30 · 1092 阅读 · 0 评论