随笔分类 - 数据结构——平衡树
摘要:\(Description\) Luogu传送门 \(Solution\) 偶然发现这道题所以来做做。 刚开始看完题的时候感觉这只能暴力模拟…… 于是不要脸的看了一眼题解之后,我们可以用一些表达式来表示每头奶牛到达它应该到的位置的时间,从而计算出总共时间。 具体来说,第 \(n\) 头牛到达其位置所
阅读全文
摘要:Description Luogu传送门 Solution 顾名思义,我们要实现的就是可持久化文艺平衡树,也就是带修的文艺平衡树。 前置知识:文艺平衡树,可持久化平衡树 对于每次修改,我们要新建出被修改的那棵子树,所有的修改及查询操作全都是在要求的版本中进行。 修改之后建出新的版本。 我写的时候直接
阅读全文
摘要:Description Luogu传送门 Solution 考虑使用平衡树维护 hash 值。 一个点的 sum 值表示这个点所在子树的 hash 值,那么如何更新呢? 应该还是比较简单的吧,就是: \[ 左子树_{sum} \times (右子树_{siz} + 1) + 根_{val} \tim
阅读全文
摘要:不打算详细写了,强推一波 yyb 神仙的博客 Splay入门解析【保证让你看不懂(滑稽)】 (这篇博客的代码完全是按照 yyb 的博客写的,并有一些补充,包括 pushup 及查询第 k 大的整数等等) 这里列几个注意事项吧: \(Splay\) 过程中,如果 \(x, y\) 为同一种儿子,那么先
阅读全文
摘要:Description Luogu传送门 Solution 题目要求我们找到第 \(i\) 的数,其实就维护一下剩下的数中最小值在哪里即可。 我们考虑使用 \(fhq-treap\)。 说一下具体实现过程: 找到剩下的点中的最小值(其实就是根)。 输出答案,删去它,合并它的两个儿子。 维护区间翻转标
阅读全文
摘要:Description Luogu传送门 Solution 题目要求我们找到第 \(i\) 的数,其实就维护一下剩下的数中最小值在哪里即可。 我们考虑使用 \(fhq-treap\)。 说一下具体实现过程: 找到剩下的点中的最小值(其实就是根)。 输出答案,删去它,合并它的两个儿子。 维护区间翻转标
阅读全文
摘要:Description Luogu传送门 Solution 先对物品按照品质从大到小排序,相同品质的按价格从小到大排序。 依次枚举每一个物品,考虑对于一个物品,其价格为 \(c\),品质为 \(q\): 拥有钱数小于 \(c\) 的人买不起,不用管。 拥有钱数大于等于 \(c\) 的人买得起,也必须
阅读全文
摘要:Description 洛谷传送门 Solution 这道题似乎能用很多种方法来做,我用的 \(fhq-treap\)。 本来我想的是维护两只平衡树,一个用来找区间,另一个来找区间最大值。 想了一会发现想假了。这样做完全不对。 于是去题解区看了一眼题解,发现似乎可以用莫队来做,但是没找到 \(fhq
阅读全文
摘要:Description P2042 [NOI2005] 维护数列 Solution 一道细节巨多的毒瘤题。 我用的 \(fhq-treap\) 通过的此题。 下面我们以此分析一下。 先说一下 \(fhq-treap\) 中需要存什么东西。 struct Treap{ int ch[2], siz,
阅读全文
摘要:Description P3391 【模板】文艺平衡树 Solution 方法一(fhq-treap) 文艺平衡树实际上只有一个操作,区间翻转。 那么我们来看看如何实现。 大体上是一致的,但是分裂时要有所改变。 平常我们写的 \(fhq-treap\) 是以数值来分裂的,这里我们换个分裂方式。 以子
阅读全文
摘要:Description P4146 序列终结者 Solution fhq-treap 不得不说 \(fhq-treap\) 代码是真的短,真的好写。 挺板子的一道题。 **区间加:**打个 \(add\) 标记,不停下放即可,相应的 \(maxs\),\(val\),\(add\) 都要更新。 **
阅读全文
摘要:Description P1486 [NOI2004] 郁闷的出纳员 Solution 无旋$treap$ (\(fhq-treap\)) 如果有不会 \(fhq-treap\) 的同学,可以看我的博客 浅谈 fhq-treap(无旋treap) 下面我们来看一看这道题。 发现 新建工资档案 和 查
阅读全文
摘要:Description P2596 [ZJOI2006]书架 Solution 这里介绍无旋treap (\(fhq-treap\)) 关于模板有不会的同学可以去看我的博客 浅谈 fhq-treap(无旋treap) 这里只介绍本题思想: 由于题目还是对排名进行的操作,所以我们要按照子树大小进行分裂
阅读全文
摘要:Description 传送门 Solution 无旋treap \(fhq-treap\) 关于 \(fhq-treap\) 不会的同学可以去看我的博客 浅谈 fhq-treap(无旋treap) 一道经典的按区间大小分裂的题。 这道题中,我们要稍微修改 \(split\) 函数。 以前我们写过的
阅读全文
摘要:Description 洛谷 P2073 送花 Solution 无旋$treap$ (\(fhq-treap\)) 这道题有点小变化。 对于 \(insert\) 操作,就按花的价格分裂。判断是否有当前要插入的花的价格,如果有就直接合并回去,如果没有,就把当前花插入进去。 对于删除操作,我们就删除
阅读全文
摘要:Description P2343 宝石管理系统 Solution 无旋treap \((fhq-treap)\) 洛谷模板题简化版。 不多说了。 有不会的话看我的博客吧。 浅谈 fhq-treap(无旋treap) 有一个小坑点,题目中求的是第 \(n\) 大的数是多少,所以查询时要查 \(tot
阅读全文
摘要:Description 传送门 Solution 无旋treap \((fhq-treap)\) 可能有些大材小用了,但是我毕竟是在练习,多写一遍总不是坏事。 基本上就是一个 \(fhq-treap\) 板子题。 不会的话,看这里 浅谈 fhq-treap(无旋treap) 我们把鬼子要摧毁的房子存
阅读全文
摘要:模板题:洛谷 P6136 【模板】普通平衡树(数据加强版) (emm刚写了这个,就放这个吧) \(fhq-treap\) 也叫做 无旋treap,由防火墙范浩强大佬发明。 个人认为是平衡树中码量最少,也最容易理解的一种写法。 主要思想 顾名思义,无旋意味着它没有旋转操作(终于没有恶心人的旋转了)。
阅读全文