05 2020 档案
摘要:题目 点这里看题目。 分析 由于这个问题与子串相关,那么我们就先把后缀自动机给建出来。 题目条件非常特殊——“出现至少两次”。而 fail 树上一个状态的祖先状态,根据定义,至少会在当前状态中出现一次。我们便可以知道,答案所对应的状态在 fail 树上一定呈祖孙关系。 我们可以用倍增法,求出状态 \
阅读全文
摘要:题目 点这里看题目。 分析 我们不难想到,对于系数进行一下的拆分: \[ \begin{aligned} f(u,j)&=\bigoplus_{(u,v)\in E} f(v,j-1)\\ &=\bigoplus_{(u,v)\in E}\bigoplus_{(v,w)\in E} f(w,j-2)
阅读全文
摘要:题目 点这里看题目。 分析 先对所有的模式串建立广义后缀自动机。 我们需要求出每个节点的集合,这个可以在 树上用线段树合并快速预处理。 考虑询问。由于字符串的子串就是前缀的后缀,因此我们可以对于每个前缀,处理出它在自动机上的对应的节点。那么一个子串在自动
阅读全文
摘要:题目 "点这里" 看题目。 分析 首先,我们不需要真的从 AC 自动机中把串删掉。由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了。 接着考虑询问。这是一个很基础的问题,一般我们会在 AC 自动机上面处理出每个状态的贡献和,并且将询问的字符串在 AC 自动机上面跑一
阅读全文
摘要:题目 "点这里" 看题目。 分析 首先对于模式串建立 AC 自动机,并且计算出每个状态的贡献总和。 考虑一个朴素的 DP : :当前串长度为,匹配到上的最大答案。 设在后加入字符会转移到, DP 的转移如下: $$f(i+
阅读全文
摘要:题目 "点这里" 看题目。 分析 我们想要建立一个只包含多个串的公共子串的后缀自动机。最简单的,先建立一个串的后缀自动机。 然后考虑如何进行扩展。在两个串的情况下,我们可以直接把另一个串放到后缀自动机上面跑,中途得到答案。在多个串的情况下显然就不会这么简单了。 考虑每一个串都放到后缀自动机上面跑一跑
阅读全文
摘要:什么是自动机 (有限状态)自动机是一种抽象的计算模型。一个有限状态自动机有有限个状态,每个状态可以迁移到一个或者多个状态。给定的字符串指定了如何转移。一个有限状态自动机可以表示为一个有向图。 对于一个自动机 。如果对于一个串 ,经过转移之后停在了一个“接收状态”那么
阅读全文
摘要:什么是 min_25 筛 min_25 筛和洲阁筛、杜教筛一样,是一种低于线性的用于求积性函数前缀和的筛法。常用 min_25 筛的时间复杂度为 ,而经过优化可以达到 (但是常数巨大且一般用不着
阅读全文
摘要:题目 "点这里" 看题目。 分析 首先发现,对于的合法三元组,一定在的子树内,并且也是的祖先。那么我们只需要考虑的位置。如果是的子孙,那么一定就是的子孙,此时的贡献是(我们以下都用表示的
阅读全文
摘要:题目 "点这里" 看题目。 分析 由于 KMP 的失配数组有着天然的找循环节的功能,因此我们不难想到对原串进行两次 KMP ,一正一反。 可以发现如下的规律: 1. 原串无循环节,这个时候 " 全场最佳 " 只会有一个元素,并且只有一个(即原串本身); 2. 原串存在循环节,并且 仅由一个字符循环而
阅读全文
摘要:题目 "点这里" 看题目。 分析 插头 DP ,考虑枚举一下两块之间的分割线,本质上就是两个端点都在边界上的路径。 DP 过程中,我们将 没有端点在边界上面的路径称为 1 路径,反之叫 2 路径 。 对于 1 路径,我们不能中途把它连成环,因此 1 路径的插头需要用括号序表示(最小整数也可以,只要能
阅读全文