FHQ Treap(无旋 Treap) 简介 FHQ Treap,也称无旋Treap,是范浩强神犇发明的一种平衡树,我认为这是最好写,最简短,最清晰的平衡树之一,码量很小,完全可以在OI限时比赛中使用。它基于分裂(Split)和合并(Merge)操作,使得二叉查找树的形态趋近平衡 实现 ...
非旋FHQ Treap复杂度证明 类比快排 a,b都是sort之后的排列 从小到大 由一个排列a构造一颗BST,由于我们只确定了中序遍历 a,但这显然是不能确定一棵树的形态的。 由一个排列b构造一颗Heap 大根 ,由于没有重复元素,然后人为钦定左儿子 lt 右儿子,那么他的后序遍历 b。 但是一棵树,如果中序遍历和后续遍历确定了,那么他的形态也就确定了。证明考虑构造一种由中序和后序遍历的序列还原 ...
2019-12-25 20:31 1 988 推荐指数:
FHQ Treap(无旋 Treap) 简介 FHQ Treap,也称无旋Treap,是范浩强神犇发明的一种平衡树,我认为这是最好写,最简短,最清晰的平衡树之一,码量很小,完全可以在OI限时比赛中使用。它基于分裂(Split)和合并(Merge)操作,使得二叉查找树的形态趋近平衡 实现 ...
一、简介 无旋Treap(fhq_treap),是一种不用旋转的treap,其代码复杂度不高,应用范围广(能代替普通treap和splay的所有功能),是一种极其强大的平衡树。 无旋Treap是一个叫做范浩强的大佬发明的(快%啊!) 在我们一起学习无旋Treap之前,本蒟蒻有几句活想说 ...
众所周知,树上背包如果上下界都卡紧了复杂度会是 \(O(nm)\),下面来进行这一点的证明。 以下设节点总数为 \(n\),背包容量最大是 \(m\)。 合并两个泛化背包的复杂度为 \(O(s_1s_2)\),其中 \(s_1\) 是第一个泛化背包的容量,\(s_2\) 是第二个背包的容量 ...
本文用势能法证明\(Splay\)的均摊复杂度,对\(Splay\)的具体操作不进行讲述。 为了方便本文的描述,定义如下内容: 在文中我们用\(T\)表示一棵完整的\(Splay\),并(不严谨地)用\(|T|\)表示\(T\)这棵\(Splay\)的节点数目。 如无特殊说明,小写英文字母 ...
建堆的复杂度先考虑满二叉树,和计算完全二叉树的建堆复杂度一样。 对满二叉树而言,第 \(i\) 层(根为第 \(0\) 层)有 \(2^i\) 个节点。 由于建堆过程自底向上,以交换作为主要操作,因此第 \(i\) 层任意节点在最不利情况下, 需要经过 \((n - i)\) 次交换操作 ...
作者:Tobin 日期:2019/04/13 缘由:看python cookbook时,用到了heapq的库,书中提到,如果仅仅是返回一个数组的最大值,用max就可以了,但是如果返回多个较大或者 ...
min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人感觉套上素数定理证明的复杂度的话应该要把下面的 log 改成 ln ,不过也差不多 ...
应该算是比较基础的知识了吧 …… 随便写写,主要内容是证明。 例题(现编的):有一棵 \(m\) 个点的有根树,每个点上有若干个数,\(m\) 个点上共有 \(n\) 个数,数的规模是 \(N\) 。每次询问给定 \(u,l,r\) ,求 \(u\) 的子树中有多少个数在 \([l,r]\) 中 ...