fhq treap 小结 粗浅地学习了这个神奇的数据结构,下面瞎写一些感受 首先fhq treap是一个基于分裂与合并的平衡树,那么怎么分裂,怎么合并呢 我们分两种情况考虑 一、权值平衡树(我自己取的名字) 所谓权值平衡树,就是任何操作都只与权值有关的平衡树 比如最基础的分裂,合并操作 分裂就是把平 ...
分类:
其他好文 时间:
2018-09-06 00:14:10
阅读次数:
149
题干:splay模板,要求维护区间反转。 splay是一种码量小于treap,但支持排名,前驱后继等treap可求的东西,也支持区间反转的平衡树。 但是有两个坏处: 1.splay常数远远大于treap以及stl中的set。 2.没有可持久化splay,但有可持久化treap。 下面是代码: 1.p ...
分类:
其他好文 时间:
2018-09-05 18:06:40
阅读次数:
242
题干:6种操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6. 求x的后继(后继定义为大于x,且最小的数) 一道treap板子题(splay ...
分类:
其他好文 时间:
2018-09-05 18:00:14
阅读次数:
188
bzoj3224 ```cpp#include <cstdio>#include <algorithm>using namespace std;#define N 100005#define inf 0x7ffffffffffff#define int long longstruct treap{ ...
分类:
其他好文 时间:
2018-09-03 20:27:12
阅读次数:
184
Splay模板,学完觉得比Treap简单,不过均摊的logn不能可持久化。 ...
分类:
其他好文 时间:
2018-09-02 02:02:24
阅读次数:
139
非旋 $treap$ (FHQ treap)的简单入门 前置技能 建议在掌握普通 treap 以及 左偏堆(也就是可并堆)食用本blog 原理 以随机数维护平衡,使树高期望为logn级别, FHQ 不依靠旋转,只有两个核心操作merge(合并)和split(拆分) 所谓随机数维护平衡就是给每个节点一 ...
分类:
编程语言 时间:
2018-08-20 18:58:37
阅读次数:
189
非旋 $treap$ (FHQ treap)的简单入门 前置技能 建议在掌握普通 treap 以及 左偏堆(也就是可并堆)食用本blog 原理 以随机数维护平衡,使树高期望为logn级别, FHQ 不依靠旋转,只有两个核心操作merge(合并)和split(拆分) 所谓随机数维护平衡就是给每个节点一 ...
分类:
编程语言 时间:
2018-08-20 13:10:25
阅读次数:
195
决定把掌握不熟练或是模型见的少的知识点在这里列一列 希望能在自己AFO前成功get技能点吧…… 数据结构 1.fhq Treap/非旋式Treap (然而好像巨慢无比……) 2.替罪羊树 3.KD-Tree 4.可并堆 5.可持久化并查集 6.各种毒瘤向的可持久化(可持久化平衡树/可并堆),就当涨见 ...
分类:
其他好文 时间:
2018-08-17 21:31:32
阅读次数:
139
那天我在做 USACO 的某道题的时候突发奇想用树状数组代替平衡树 (但是这似乎不是我首创的 idea) (不过貌似用的人很少) 大体做法就是靠二分+树状数组,单次操作复杂度 \( O( log^2 n ) \) 虽然复杂度比 Treap 高了一点,但是代码短呀! (但是我不打算贴代码了 QWQ 因 ...
分类:
编程语言 时间:
2018-08-17 19:03:35
阅读次数:
247
启发式合并 刚听到这个东西的时候,我是相当蒙圈的。特别是“启发式”这三个字莫名的装逼,因此之前一直没有学。 实际上,这个东西就是一个SB贪心。 以堆为例,若我们要合并两个堆a、b,我们有一种极其简单的做法:那就是比较一下它们的大小,将小的堆的每个元素依次插入到大的堆中。不妨设$|a|≤|b|$,则时 ...
分类:
其他好文 时间:
2018-08-16 00:49:47
阅读次数:
200