Splay
HT008_123
家人们点点关注叭
展开
-
Splay伸展树
首先要了解啥是Splay! 度娘的介绍 Splay是对二叉搜索树的优化(神TM优化),防止极限的数据退化成N的复杂度! 比方说我输入的数据降序的,那么二叉搜索树就屁用没有了! 所以说要尽量把这棵树变成一颗满二叉树,深度尽量低。 做到这些效果的方法即为左旋和右旋,就是儿子变成了老子。 而Splay的核心思想即为我是你老子,我是你老子,直到我成为祖宗。 在这个过程中这棵树会变得很平衡!原创 2017-12-20 17:13:56 · 236 阅读 · 0 评论 -
[ZJOI2006] GameZ游戏排名系统
题目描述:平衡树.题目分析:这题炒鸡好写的,就是道平衡树的裸题! 资瓷del和查询排名 用map存一下节点编号 我们在平衡树上也不用维护相同值的个数了 左子树维护<=data[now]的值,因为相同的肯定是后来插入. 第一个操作直接把查询对象旋转到根上去,然后输出右子树大小+1 第二个操作先把排名变成第几小,然后用排名查询输出就好了,懒得搞区间操作了(大雾 平板...原创 2018-04-11 14:09:45 · 314 阅读 · 0 评论 -
[CQOI2014]排序机械臂
题目描述:题目分析:首先排个序,求出每次找到最小的数是哪个,当然输出答案要记录size 搞个rev标记,注意下放!题目链接:Luogu 3165Ac 代码:#include<cstdio>#include<algorithm>#define il inlineusing namespace std;const int ...原创 2018-04-10 09:42:32 · 191 阅读 · 0 评论 -
[NOI2003] 文本编辑器
题目描述:雾题目分析:Splay序列操作裸题,建树的时候最好仿照线段树的建树方法.题目链接:Luogu 4008Ac 代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define il inl...原创 2018-04-02 08:37:17 · 299 阅读 · 0 评论 -
[ZJOI2006]书架
题目描述:1. Top S——表示把编号为S的书放在最上面。2. Bottom S——表示把编号为S的书放在最下面。3. Insert S T——T∈{-1,0,1},若编号为S的书上面有X本书,则这条命令表示把这本书放回去后它的上面有X+T本书;4. Ask S——询问编号为S的书的上面目前有多少本书。5. Query S——询问从上面数起的第S本书的编号。题目分析:...原创 2018-03-31 08:38:41 · 309 阅读 · 0 评论 -
[HNOI 2002] 营业额统计
题目描述:每天给出一个数 求本数跟之前天最小差值绝对值的和题目分析:求个前驱,求个后继,取个Min题目链接:BZOJ 1588 Luogu 2234Ac 代码:// luogu-judger-enable-o2#include <iostream>#include <cstdio>#define il inlineco...原创 2018-03-19 21:04:36 · 201 阅读 · 0 评论 -
[JSOI2008] 火星人
题目描述:给出一个字符串 然后给出 M 个 操作 Q : X Y 求 从 X 开始的后缀 和 从 Y开始的后缀的 LCP R : X Y 把 X 位置 的字符改成 Y I : X Y 从 X 后面插入一个字符 Y题目分析:求LCP的经典方法可以使用后缀数据结构 也可以 用 二分加哈希的办法 如果没有 R I 操作 就很好搞了 有了 R I 操作等同于我们需要修改某...原创 2018-03-13 16:45:08 · 217 阅读 · 0 评论 -
[HNOI 2012] 永无乡
题目描述:每个小岛有一个重要度W 资瓷以下操作: 1:在 X Y 之间建一座桥梁 2:查询与 X 联通的小岛中 重要度为第K小的岛题目分析:看到建边就开始乱搞LCT了,雾 其实连边我们可以搞一下启Fa♂式合并(巨巨们说是一个log 1.Splay+启Fa♂式合并 我们刚开始把每个节点都当成一个独立的Splay 然后用一下并查集维护一下联通关系就好了 O(Qlogn2...原创 2018-03-23 10:30:01 · 178 阅读 · 0 评论 -
[ZJOI2007]报表统计
题目描述:不想描述了,心累。题目分析:两个操作分别用splay和线段树来维护 全局的差值最小直接用splay在插入的时候维护前驱后继即可 相邻最小差值我们可以这样搞 首先 用线段树维护相邻的最小值 可以注意到插入元素的操作,如果是在一个元素之后反复插入,这些元素之间更新出来的最小值是不会发生改变的。只有元素与元素之间会有不断的插入而导致最小值变大。所以用线段树单点修改+维护...原创 2018-03-18 09:01:35 · 254 阅读 · 0 评论 -
树套树模板 之 二逼平衡树
题目描述:描述?描述个屁! 就是让你写个数据结构,资瓷一堆恶心的操作.题目分析:如果没有区间限制,这就是道裸的不能再裸的Splay! 然而加入区间限制要求我们可持久化 什么BIT套Seg啊 主席树套BIT啊 Seg套Treap啊 还有分块大佬! 然后我就写了Seg套Splay (刚开始想搞普通线段树套个权值来着,无奈不会搞前驱后继,如果会了在搞吧qwq 其实树套树并不难...原创 2018-03-11 20:23:33 · 265 阅读 · 0 评论 -
Splay之区间翻转问题
题目描述给你 n 个数 分别为 1,2,3,4–n 然后有 m 个操作,每个操作对应一段区间,将区间的数进行翻转。 比如 1,2,3,4,5 这段序列 操作区间为 2-4 翻转完成后的序列为 1,4,3,2,5输入格式第一行分别输入 n,m 第2行到m+1行每行输入两个数 对应操作的区间输出格式输出最后翻转完成后的序列数据范围n,mSpl原创 2018-01-04 16:07:25 · 2169 阅读 · 0 评论 -
郁闷的出纳员
出纳员没郁闷,我倒郁闷了。 Debug了3个小时?!首先,我们发现,对于增加和减工资操作是全局的性质的。 所以我们可以用一个变量来维护这个操作。怎么删除呢? 我们可以找到第一个大于退出工资的人,把他这人提到根上去。 然后小于退出工资的人全部集中在了根节点的左子树。可以先插入一个极大的虚根维护这个问题,否则全部都小于退出工资的情况不好搞。询问查询的是第几大,不是第几小~#include <io原创 2018-01-05 17:26:24 · 360 阅读 · 0 评论 -
[CF 947 B] Producing Snow
题目描述:给出 N 个 A , T 每天放置雪堆 AiAi对于之前没有化完的雪堆,在 第 i 天 里化 min(Ti,Ainow)min(Ti,Ainow)求每天化的雪的数量题目分析:怎么讲呢,我先写了发平衡树 每次把Ai插入后,在插入 Ti 这样在 根节点的左儿子全部是一下就化没了的 贡献为 sum[ch[rt][0]] 根节点右边的是化不完的 贡献为 size[ch...原创 2018-03-29 09:08:11 · 125 阅读 · 0 评论