treap
zmh964685331
这个作者很懒,什么都没留下…
展开
-
不基于旋转的treap
介绍最近看到有一种不用旋转的treap,好像还可以持久化,于是就学了一下。treap就是tree+heap。它的每个节点的权值data满足排序二叉树的性质,随机权值key满足堆的性质。由于key是随机的所以它大致是平衡的。 不基于旋转的treap有两个基本操作:merge(a,b):返回一个treap,包含a,b两个treap中的所有节点,但要保证b中所有节点权值都大于等于a。split(a,n)原创 2016-01-18 14:14:42 · 4022 阅读 · 3 评论 -
函数式treap
基本操作函数式treap也就是可持久化treap,是一种可持久化数据结构。它的主要操作是merge和split,详情可以参考不基于旋转的treap。 不同之处在于我们要可持久化,所以只要将所有的修改操作变为建新节点就行了。写起来很简单,具体实现可以看看例题代码。例题UVA12538 题意就是要求维护一个字符串,支持插入,修改,访问历史版本。 这直接用函数式treap做就可以了。 我的实现方法原创 2016-02-22 19:16:58 · 571 阅读 · 0 评论