粗略的学习了一下笛卡尔树 主要是为了平衡树打基础吧 因为关于平衡树 treap 早忘了 splay 不信任复杂度 然后 我能学一种比较简单的树Y 笛卡尔树.这里以建出小根堆为例。描述区间性质的树 可以当成二叉搜索树不过并不平衡因为每次都是选取当前区间最小值当做为根 然后显然根据区间的数的排列不同树的 ...
分类:
其他好文 时间:
2019-10-19 09:40:54
阅读次数:
92
[TOC] 核心思想 主要的思想与treap是一样的。通过让二叉查找树同时满足堆(随机参数)的性质来防止深度过大。与普通treap不同的是非旋treap通过树的分裂与合并来实现这一点,而非旋转。 核心操作 Update 如果是要实现类似于 的功能,可以不用这一部分。本文以 "loj104" 为例,我 ...
分类:
其他好文 时间:
2019-10-18 09:32:25
阅读次数:
58
一、什么是$fhq treap$ $fhq treap$:非旋转$treap$,顾名思义,不用像普通$treap$那样繁琐的旋转,只需要通过分裂和合并,就可以实现基本上是所有数据结构能实现的操作,并且 短小、精悍 ,时间复杂度与$splay$齐当,算是一个十分易懂且优秀的算法(并不需要提前学习普通$ ...
分类:
其他好文 时间:
2019-10-12 20:27:53
阅读次数:
90
1.哈希算法、哈希表和KMP(Done) 2.平衡树Treap(Done) 3.悬线法优化DP:https://wenku.baidu.com/view/bc8311f69e314332396893f7.html(Done) 4.线段树的高级应用:节点维护邻接矩阵/区间取模计数/扫描线 线段树 5. ...
分类:
其他好文 时间:
2019-10-03 21:35:29
阅读次数:
102
题目描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”. 每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤[1~109];Xi,Yi∈整数. 当满足下列两个条件之一,两只奶牛i和j是属于同一个群的: 1. ...
分类:
其他好文 时间:
2019-09-22 01:22:42
阅读次数:
78
[TOC] 例题:hdu 4585 Treap树 是一种简单的平衡二叉搜索树。 二叉搜索树的每一个节点都有一个键值,除此之外Treap树为每个节点人为添加了一个称之为优先级的权值。对于键值来说,这是一棵二叉搜索树,对于权值来说这是一个堆。 1、Treap树的唯一性 Treap树的重要特性:另每个节点 ...
分类:
其他好文 时间:
2019-09-15 01:20:54
阅读次数:
104
平衡树 Treap实现 思路: 利用堆的性质, 让二叉搜索数满足堆的性质,从而达到logn的高度. 模板 具体解释看注释,注释也不多(逃) 代码: c++ / 平衡数Treap模板 Treap 可以理解为一棵树加上一个堆, 通过对每个节点赋予一个随机值 在满足堆的性质的同时满足二叉搜索树的性质, 保 ...
分类:
其他好文 时间:
2019-09-13 20:18:33
阅读次数:
80
1、罗马游戏: 左偏树模板。 小根堆:合并选小的做根,记为$r1$,然后把$r2$合并到$r1$右边(原$r1$左边长,右边短),然后更新父亲,判断长度关系交换儿子,更新长度。 删除用$fhq_treap$的删除方式。 查找用并查集的方法,但是不带路径压缩。 2、棘手的操作: 联通块内最小值用左偏树 ...
分类:
其他好文 时间:
2019-09-10 00:21:47
阅读次数:
81
鉴于水平有限,可能会有问题。 cpp include using namespace std; typedef long long ll; define ls ch[id][0] define rs ch[id][1] const int INF = 1e9; const int MAXN = 10 ...
分类:
其他好文 时间:
2019-08-24 09:54:30
阅读次数:
66