"题目链接" $Solution:$ 容易看出是一道平衡树的题(这里我们用$fhq Treap$维护) 但是由于$A$操作是全局修改,所以我们甚至不需要维护一个延迟标记,只需在全局记录两个标记即可 $Code:$ ...
分类:
其他好文 时间:
2020-02-19 21:08:45
阅读次数:
54
#include<iostream> #include<algorithm> #include<vector> #include<cstdio> #include<string> using namespace std; const int N=1e4+10; int a[N]; int root; ...
分类:
其他好文 时间:
2020-02-11 11:47:35
阅读次数:
78
fhq-Treap是一种非常优秀的无旋平衡树。下面我们来介绍他的函数原理 我们先介绍他的两个重要函数 1.spilt(分割函数) 我们将整棵树按照值的大小分割成x,y两棵树,x中的值都是小于等于key值的 这样我们就可以通过递归操作来解析,下面看具体代码 void spilt(int p,int k ...
分类:
其他好文 时间:
2020-02-10 19:46:52
阅读次数:
119
$Treap = Tree + Heap$ 要了解Treap,就先要看看什么是二叉搜索树 Treap既有BST的性质,也有堆的性质,Treap的每个结点额外附加一个随机值(优先级),让他们按照关键码构成BST的同时也满足堆的性质(父节点优先级高于或低于子节点优先级),因为优先级是随机的,这样在绝大多 ...
分类:
其他好文 时间:
2020-02-08 10:07:14
阅读次数:
81
网络流 最大流和最小费用最大流原理 上下界网络流 模拟费用流 网络流建模总结 带花树 树 树上倍增 树链剖分 点分治 基环树 DP 概率期望dp 单调队列dp 状压dp 斜率优化dp 计算几何 模板 半平面交 好题 数据结构 线段树高级应用 可持久化线段树 Treap Splay 可持久化平衡树 树 ...
分类:
编程语言 时间:
2020-02-05 09:27:29
阅读次数:
86
众所周知, BST 的操作复杂度是 $O(\log n)$ ,但 BST 可能会退化成一条链,于是我们可以使用平衡树。 平衡树有很多种,但我还只会三种(我太菜了):Treap,Splay,fhq Treap Treap Treap 记录了一个优先级,并在满足构成 BST 的同时,会按照优先级的大小来 ...
分类:
其他好文 时间:
2020-02-03 17:23:30
阅读次数:
88
BST 是 Treap 的基础。 "这位大佬写的不错" 只写一点基本操作方便自己理解。 性质:左儿子 = k) { if (!tr[o].ls) return ans; else return pre(tr[o].ls, k, ans); } else { if (!tr[o].rs) { if ( ...
分类:
其他好文 时间:
2020-02-03 09:27:34
阅读次数:
74
Treap/平衡二叉树 蓝书习题:普通平衡树 这道题是一道平衡树模板题,可以用多种解法,这里用最简单的Treap,下面简单说一下各种操作的思路 添加 : 当要添加一个值时,先判断所要加入的以p为根节点的子树是否为空,为空添加新的节点:New(val)。 当然平衡树,当加入新节点后,子节点dat变得大 ...
分类:
其他好文 时间:
2020-01-31 00:37:12
阅读次数:
63
这里只有板子没有原理QWQ 可实现 1.插入 x 数 2.删除 x 数(若有多个相同的数,只删除一个) 3.查询 x 数的排名(排名定义为比当前数小的数的个数 +1) 4.查询排名为 x 的数 5.求 x 的前驱(前驱定义为小于 x,且最大的数) 6.求 x 的后继(后继定义为大于 x,且最小的数) ...
分类:
编程语言 时间:
2020-01-29 19:50:17
阅读次数:
79
1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并 3. 平衡树 Treap 随机 ...
分类:
其他好文 时间:
2020-01-27 19:00:01
阅读次数:
97