摘要:
fhq_treap 和 Splay 之外的平衡树的代码是不可能写的。仅供学术研究,所以只有口胡,没有代码。 1. 旋转treap 学过 fhq_treap 的都知道 treap 是啥吧( 但是 treap 也可以用旋转来维护。 插入操作: 这是显然的,找到位置插入以后,把结点一路转上去,直到父亲结点 阅读全文
摘要:
上一篇实在是太简单了. 接下来我们将要进入最大公因数理论. 1. 最大公因数和最小公倍数 首先我们需要明确公因数的定义. 设有 $a_1,\cdots,a_n$, 若 $d|a_1,\cdots,d|a_n$, 称 $d$ 为 $a_1,\cdots,a_n$ 的公因数. 我们记这些公因数组成的集合 阅读全文
摘要:
作为第一节, 这些都是相当基础的内容, 但是我们可以感受揣摩其定义, 推导的严谨性. 但是最后算术基本定理的证明还是需要技巧的. 1. 整除 定义: 设 $a,b\in\mathbb{Z}, a\neq 0$, 若 $\exist q\in\mathbb{Z}$ 使得 $b=qa$, 则称 $b$ 阅读全文
摘要:
模板题:LOJ133 就是区间上的问题搬到了矩阵上。 但其实矩阵上的问题处理起来并不容易。比如这道题,涉及矩阵最大值,必须采用二维线段树(线段树套线段树)的方式进行维护,非常繁琐。 但对于LOJ133这道题,因为只有单点修改区间求和,所以考虑使用二维树状数组,即树状数组套树状数组。而二维树状数组写起 阅读全文
摘要:
注意:本文全程口胡。暂时没有代码。 猫树,出自immortalCO的博客,是“一种高效处理无修改区间或树上询问的数据结构”。 ~~lxl说他自己反对用猫树这个名字,并且认为这个名字就像ODT一样奇怪,可能叫“二区间合并”更好一些~~ 首先我们要明确猫树能干什么。 就如immortalCO的博客的标题 阅读全文
摘要:
前置知识:普通平衡树。 实际上,平衡树能做到的操作不只有插入删除,查排名查值,前驱后继这些。 如果我们把平衡树移到区间上,我们甚至能够支持比线段树更强的操作——区间翻转。 这就是文艺平衡树这道题了。 1. 区间树 首先我们来明确一下区间树的概念。 顾名思义,区间树就是用来维护区间的。 具体地,我们规 阅读全文
摘要:
之前写过 Splay 的介绍。那么接下来就是对于 fhq_treap 的介绍了。 0. 引子 dalao云:“treap,tree+heap 也。” treap 是一个同时具有 tree(即BST)和 heap 的特点的平衡树。 具体地说,我们会对每个节点随机一个 key 值,然后要求这棵 BST 阅读全文
摘要:
参考资料: OI-wiki ouuan的博客 1. 回文自动机介绍和结构 回文自动机,又称回文树,是一个能够存储字符串中所有回文子串的数据结构。 首先放一张图来感受回文自动机的总体结构。这是对字符串 $\texttt{eertree}$构建的回文自动机。 (eertree是回文自动机最初提出时的名字 阅读全文
摘要:
参考资料: ouuan的博客 OI-wiki 如果我们只需要找一个模式串在另一个文本串中出现的位置和次数,使用KMP算法即可在线性时间内解决问题。 但是如果模式串的数量不止一个,甚至模式串有包含关系时,我们就需要AC自动机了。 奇怪的知识:AC自动机全称Aho–Corasick算法,是两个人名的组合 阅读全文
摘要:
参考资料1 参考资料2 0. 约定 字符串的下标从 $0$ 开始。$|s|$ 表示字符串 $s$ 的长度。 对于字符串 $s$,记其每一个字符分别为 $s_0, s_1, \cdots, s_{|s|-1}$。 子串 $s_l, s_{l+1}, \cdots, s_{r-1}, s_r$ 简记为 阅读全文