数据结构
文章平均质量分 76
|lyc
这个作者很懒,什么都没留下…
展开
-
【模板】Tire树
TireTireTire以一个空结点为根节点,将字符串的各个字母按先后顺序依次连到树上。举个栗子,将abcabcabc和adeadeade插入树中可以观察到,TireTireTire顺着根节点出发,沿任意一条子树走到底都为一个已经存储好的字符串,对于拥有相同前缀的字符串,并不需要建立新的子树,而是在第一个不同的位置开始建立分支即可。但是为了存储相同前缀的字符串的个数,我们使用一个数组cnt[x]cnt[x]cnt[x]来表示到第x。原创 2022-10-28 01:38:58 · 673 阅读 · 0 评论 -
【模板】Treap
题目链接\qquad这篇文章主要介绍用TreapTreapTreap实现的平衡树其它的我不会∙\bullet∙先来介绍BSTBSTBST是什么\qquadBinarySerahTreeBinary\quad Serah\quad TreeBinarySerahTree,即二叉搜索树。其定义为左子树都小于根节点的值,右子树都大于根节点的值。∙BST\bullet BST∙BST的中序遍历结果一定是从小到大的序列。∙\bullet∙默认的,BSTBSTBST中结点的值互不相同,如果存在多个相同的值,可以原创 2022-10-22 21:00:54 · 130 阅读 · 0 评论 -
[模板]LCA最近公共祖先
首先可以想到找到这两个点坐标,然后再向上找父节点,直至找到相同父节点。但是我们不是按照从小到大的顺序跳,而是从大到小跳,即。,显然省去很多不必要的回溯,也会将时间缩短为。如何求树上两点的最近公共祖先?但是如果从大到小跳可以直接跳到。的倍数来增大,也就是一次跳。此时就需要回溯,直到回溯到。但是这样做太慢了,会超时。这样的预处理后就可以进行。来存储每个点的深度,用。原创 2022-10-15 23:58:09 · 129 阅读 · 0 评论 -
左偏树模板
qquad左偏树是一棵二叉树,具有堆的性质,支持在O(log2n)O(\log_2n)O(log2n)的时间复杂度内进行合并的数据结构外结点:左儿子或右儿子为空的结点距离:一个结点的距离为该结点到最近的外结点的距离\qquad我们将空结点距离定义为−1-1−1。原创 2022-10-08 15:45:58 · 141 阅读 · 0 评论 -
浅谈堆及其应用
堆是一种树形数据结构,对于一个堆,其一定是一个而小根堆则额外满足左右子节点都大于父节点,大根堆则满足左右子节点都小于父节点,一般应用于求出某组数中的最大值或最小值(),本文主要介绍,原创 2022-10-06 19:25:38 · 273 阅读 · 0 评论 -
可持久化并查集
平时因为路径压缩后查询速度过快,导致按秩合并无人问津,但是在不能使用路径压缩时按秩。可持久化,想到用可持久化数组来维护并查集,因为并查集本质上也是用数组记录的。用可持久化数组维护按秩合并的并查集时要维护两个数组,一个。合并的作用就体现出来了,按秩合并可以在。数组的值,持久化中,改变意味着需要。内找到目标节点,在只有插入操作的情。况下,按秩合并的总复杂度为。,因为路径压缩会改变。原创 2022-09-28 20:51:11 · 162 阅读 · 0 评论 -
luoguP3168
于是我们成功的把这道题变成了主席树模板。差分应在右端点后一位进行减操作。因为可能有超过多个相同的第。这样单点查询就变成了求。,也就是一个区间查询。原创 2022-09-26 19:19:07 · 132 阅读 · 1 评论 -
并查集模板
并查集简单来说就是维护并判断多个族谱中的两人是否有相同的祖宗。显然,这样在查询上会明显加快,时间复杂度为。上可以降低搜索层数,即按秩合并。初始化将每个人的父亲置为自己。写一个函数来查找某个人的祖宗。来维护每个人的父亲,上面,树的深度依然是。原创 2022-09-14 08:41:55 · 98 阅读 · 0 评论 -
主席树【模板】
显然,如果我们将每次修改操作后的线段树存下来会消耗大量空间,但是,如果我们不存储修改操作后的整棵树,而是只增加新修改的点。对于每一次修改,我们只需要建立修改点和与其相关点的新节点就可以了,其他的点直接连在之前版本的树上就可以了。首先要明白主席树做的什么:对一棵线段树的节点进行修改,然后查询第。是在每次修改前先将上一个版本的节点复制一次。由此观察主席树的存储和线段树有明显的差异。的大佬创建的所以又叫做主席树。次操作后的线段树中的某个节点。主席树因为创建者名字缩写为。原创 2022-09-21 20:42:52 · 363 阅读 · 1 评论