摘要: 笛卡尔树 一棵二叉树,结构上满足左子树的下标小于自己和右子树,右子树的下标大于自己和左子树。且键值满足堆的限制。 栈构建。维护当前根节点向右一直跳的右链,那么按数组下标顺序插入,每次插入,从栈顶一个个考虑,如果当前的节点的键值不配当他的父亲,那么就弹栈并继续,如果栈空或者找到一个可以当他的父亲的节点 阅读全文
posted @ 2023-03-23 19:40 infinities 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 复习。 这玩意主要用来求 LCP,最长公共前缀。但是在一些时候可以写二分哈希代替 SA。 对一个字符串进行后缀排序,即把后缀按字典序排序。 考虑倍增。我们排序后缀的前 $2^i$ 位,然后排序 $2^{i+1}$ 位时,只需把后缀 $j$ 的前 $2^i$ 位的排名和后缀 $j+2^i$ 的前 $2 阅读全文
posted @ 2023-03-23 19:09 infinities 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 有点忘了。省选前来复习下。 一个节点有几个信息:父亲。表示 $endpos$ 集合最小的,且是当前节点 $endpos$ 集合超集的节点。转移状态(儿子),表示加入某个字符能转移到的位置。$len$,表示节点表示的这些子串的最长长度。 考虑构建。首先有一个根(表示空集)。 每次插入一个字符 $c$, 阅读全文
posted @ 2023-03-23 18:12 infinities 阅读(149) 评论(0) 推荐(0) 编辑