Treap=Tree+Heap,即在普通二叉查找树的基础上每个节点有了一个新值域:强化值(因为它将普通二叉查找树强化为treap就自己起了这个名字,是用来满足堆性质的,即后文说满足堆性质都指强化值满足堆性质)。要求这个树节点的键值(即要代表的数)满足BST的性质、强化值满足小跟堆的性质(你非得大根堆 ...
分类:
其他好文 时间:
2020-05-31 18:15:35
阅读次数:
59
要求构造一棵treap,其结点的(key,priority)要求为(x,sinx),且这棵treap的高度是n,所有x都为整数 根据treap的特性,将问题转化为构造一个pair<x,sinx>序列,要求x递增,sinx也递增 当sinx很小时,sinx=x,即接近线性,那么我们找到一个能满足sin ...
分类:
其他好文 时间:
2020-05-25 19:46:32
阅读次数:
69
树堆(Treap)详解 本篇随笔详细讲解一下一种随机化数据结构——树堆($Treap$)。 树堆的概念 首先给一个字符串等式: $$ Treap=Tree+heap $$ 所以$Treap$树堆其实就是树+堆。树是二叉查找树$BST$,堆是二叉堆,大根堆小根堆都可以。 关于$BST$的相关知识,请看 ...
分类:
其他好文 时间:
2020-05-13 20:28:48
阅读次数:
77
$fhq Tree$ 区间翻转——$tag$的妙用 对于$fhq$树的基础知识,参见 "非旋(fhq) Treap 小记" 全篇采用结构体记录树的相关信息: $\frak{First.}$另一种实现$split$的方法 按子树大小分裂:将这棵树按照某个值$x$分裂成两棵子树,其中一棵包含权值小的前$ ...
分类:
其他好文 时间:
2020-05-02 18:41:46
阅读次数:
58
模板题: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+10; const int mod=1e9+7; struct node{ int l,r,key,mi,rnd,rev,a ...
内容简介: 本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好 ...
分类:
编程语言 时间:
2020-04-23 15:04:46
阅读次数:
359
[GDSOI2017]中学生数据结构题(树链剖分+fhq treap) 题面 给出一棵树,支持三种操作 1. ADD:路径加 2. QUERY:路径求和 3. SHIFT:树上路径整体循环移动一位(如:原路径上的权值依次是:1,4,5,3,操作完后变成:3,1,4,5) 分析 考验数据结构功底和代码 ...
分类:
其他好文 时间:
2020-04-20 21:30:59
阅读次数:
53
普通平衡树: 非递归查询: 无旋Treap维护序列: 操作1翻转序列[L,R],操作2查询pos位置的字符。 需要搭配快读和线性建树才能卡过去。 ...
分类:
其他好文 时间:
2020-03-21 09:40:52
阅读次数:
54
Splay 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 const int maxn=1e5+5,inf=0x3f3f3f3f; 5 int siz[maxn],fa[maxn],ch[maxn][2],rep ...
分类:
其他好文 时间:
2020-03-05 21:00:30
阅读次数:
100