摘要: 树上对于某几个特殊的点和其两两的 LCA 构成的树。 常用于解决关键点少或多次询问给定点集、答案与树除了关键点以外的形态无关的问题。 构建方法是: 维护栈,表示从根到虚树现在节点的路径,每次加入按如下流程操作: 如果目前的栈顶是加入点的祖先,直接入栈。否则设栈顶和点的 LCA 是 $x$。 如果栈顶 阅读全文
posted @ 2023-03-30 15:14 infinities 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 简单写一下 splay。 刚刚写了一下没写出除了少 splay 以外的任何锅来。令人感慨。 所有操作都是基于朴素二叉搜索树,只是加入了一个 splay 操作均摊复杂度。 $splay(u,x)$ 表示把 $u$ 旋转到 $x$ 的儿子位置(如果 $x=0$ 则转到根)。 旋转采用双旋保证复杂度。对于 阅读全文
posted @ 2023-03-29 20:00 infinities 阅读(13) 评论(0) 推荐(0) 编辑
摘要: FFT: 首先要知道 $n$ 次多项式可以用 $n+1$ 个系数表示,也可以用 $n+1$ 个不同的 $x$ 得到的 $f(x)$ 点值来唯一确定。 那么设单位根 $\omega_{n}$,则有 $f(\omega_{n}^k)=f_0(\omega_{n/2}^k)+\omega_n^kf_1(\ 阅读全文
posted @ 2023-03-27 19:51 infinities 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 用于解决多模式串匹配相关问题。实际上就是 KMP 在多串的扩展。 首先建出字符串的 trie 树,然后 AC 自动机只是在 trie 树上加了一些边。 只需要记住:儿子的 fail 就是 fail 的儿子,不存在的儿子直接是 fail 的儿子,然后 bfs 即可。 然后解决的问题类似于给定若干模式串 阅读全文
posted @ 2023-03-27 17:29 infinities 阅读(20) 评论(0) 推荐(0) 编辑
摘要: P8499 首先,显然需要树哈希。哈希方法见 OIwiki。 设 $f_i$ 表示 $i$ 子树的哈希值,那么我们如何判断 $G$ 能否通过删去不超过 $k$ 个点变成 $H$? 考虑 $solve(i,j,delta)$ 表示我们需要判断 $G$ 的 $i$ 子树是否能通过删去不超过 $delta 阅读全文
posted @ 2023-03-25 11:50 infinities 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 笛卡尔树 一棵二叉树,结构上满足左子树的下标小于自己和右子树,右子树的下标大于自己和左子树。且键值满足堆的限制。 栈构建。维护当前根节点向右一直跳的右链,那么按数组下标顺序插入,每次插入,从栈顶一个个考虑,如果当前的节点的键值不配当他的父亲,那么就弹栈并继续,如果栈空或者找到一个可以当他的父亲的节点 阅读全文
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) 编辑
该文被密码保护。 阅读全文
posted @ 2023-03-21 12:01 infinities 阅读(0) 评论(0) 推荐(0) 编辑
摘要: LOJ3273 题意:有若干个点,满足坐标 $0\le x,y,x+y\le n$,要求支持操作:插入点,查询某个点现在的位置,用一条长度为 $l$ 的线段(一端在原点)从 $x$ 轴或者 $y$ 轴开始向上/下推长度为 $l$ 的距离。 $n\le 10^9,m\le 5\times 10^5,q 阅读全文
posted @ 2023-03-16 09:09 infinities 阅读(126) 评论(0) 推荐(0) 编辑