
Splay
HT008_123
家人们点点关注叭
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Splay伸展树
首先要了解啥是Splay! 度娘的介绍 Splay是对二叉搜索树的优化(神TM优化),防止极限的数据退化成N的复杂度! 比方说我输入的数据降序的,那么二叉搜索树就屁用没有了! 所以说要尽量把这棵树变成一颗满二叉树,深度尽量低。 做到这些效果的方法即为左旋和右旋,就是儿子变成了老子。 而Splay的核心思想即为我是你老子,我是你老子,直到我成为祖宗。 在这个过程中这棵树会变得很平衡!原创 2017-12-20 17:13:56 · 286 阅读 · 0 评论 -
[ZJOI2006] GameZ游戏排名系统
题目描述: 平衡树. 题目分析: 这题炒鸡好写的,就是道平衡树的裸题! 资瓷del和查询排名 用map存一下节点编号 我们在平衡树上也不用维护相同值的个数了 左子树维护<=data[now]的值,因为相同的肯定是后来插入. 第一个操作直接把查询对象旋转到根上去,然后输出右子树大小+1 第二个操作先把排名变成第几小,然后用排名查询输出就好了,懒得搞区间操作了(大雾 平板...原创 2018-04-11 14:09:45 · 353 阅读 · 0 评论 -
[CQOI2014]排序机械臂
题目描述: 题目分析: 首先排个序,求出每次找到最小的数是哪个,当然输出答案要记录size 搞个rev标记,注意下放! 题目链接: Luogu 3165 Ac 代码: #include<cstdio> #include<algorithm> #define il inline using namespace std; const int ...原创 2018-04-10 09:42:32 · 227 阅读 · 0 评论 -
[NOI2003] 文本编辑器
题目描述: 雾 题目分析: Splay序列操作裸题,建树的时候最好仿照线段树的建树方法. 题目链接: Luogu 4008 Ac 代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define il inl...原创 2018-04-02 08:37:17 · 327 阅读 · 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 · 350 阅读 · 0 评论 -
[HNOI 2002] 营业额统计
题目描述: 每天给出一个数 求本数跟之前天最小差值绝对值的和 题目分析: 求个前驱,求个后继,取个Min 题目链接: BZOJ 1588 Luogu 2234 Ac 代码: // luogu-judger-enable-o2 #include <iostream> #include <cstdio> #define il inline co...原创 2018-03-19 21:04:36 · 228 阅读 · 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 · 240 阅读 · 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 · 208 阅读 · 0 评论 -
[ZJOI2007]报表统计
题目描述: 不想描述了,心累。 题目分析: 两个操作分别用splay和线段树来维护 全局的差值最小直接用splay在插入的时候维护前驱后继即可 相邻最小差值我们可以这样搞 首先 用线段树维护相邻的最小值 可以注意到插入元素的操作,如果是在一个元素之后反复插入,这些元素之间更新出来的最小值是不会发生改变的。只有元素与元素之间会有不断的插入而导致最小值变大。所以用线段树单点修改+维护...原创 2018-03-18 09:01:35 · 289 阅读 · 0 评论 -
树套树模板 之 二逼平衡树
题目描述: 描述?描述个屁! 就是让你写个数据结构,资瓷一堆恶心的操作. 题目分析: 如果没有区间限制,这就是道裸的不能再裸的Splay! 然而加入区间限制要求我们可持久化 什么BIT套Seg啊 主席树套BIT啊 Seg套Treap啊 还有分块大佬! 然后我就写了Seg套Splay (刚开始想搞普通线段树套个权值来着,无奈不会搞前驱后继,如果会了在搞吧qwq 其实树套树并不难...原创 2018-03-11 20:23:33 · 288 阅读 · 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,m Spl原创 2018-01-04 16:07:25 · 2232 阅读 · 0 评论 -
郁闷的出纳员
出纳员没郁闷,我倒郁闷了。 Debug了3个小时?!首先,我们发现,对于增加和减工资操作是全局的性质的。 所以我们可以用一个变量来维护这个操作。怎么删除呢? 我们可以找到第一个大于退出工资的人,把他这人提到根上去。 然后小于退出工资的人全部集中在了根节点的左子树。可以先插入一个极大的虚根维护这个问题,否则全部都小于退出工资的情况不好搞。询问查询的是第几大,不是第几小~#include <io原创 2018-01-05 17:26:24 · 394 阅读 · 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 · 144 阅读 · 0 评论