随笔分类 - 字符串-自动机
1
摘要:# 题目 有一次机灵鬼和学长可爱多打比赛, 可爱多不会做一道字符串题,机灵鬼做了很久终于做出来了,这是机灵鬼第一次做出可爱多不会的题。 可爱多觉得很丢人,于是准备研究字符串。可爱多精通 算法。 算法的输入是一个字符串 ,该算法的核心是对
阅读全文
摘要:「UOJ747」面基之路 难得有一道我做得起的水题。 尝试二分答案,判定等价于检查是否存在一个点,使得在规定时间内 hehe 蚤和网友们都可以走到该点。检查能否走到某个结点是容易的,检查某条边上是否存在一个点相当于是检查集合的交集是否为空,转化成区间的并集是否覆盖了整条边,可以将区间排序之后扫描端点
阅读全文
摘要:题目 点这里看题目。 分析 ~~从一开始就知道正确的思路,到最后都没有写成正确的算法~~。 给定一个字符串 ,考虑怎么验证它能不能由 和另外一个括号串合并起来。 一个自然的做法是,写一个 DP:设 表示 能否由 和另一个括号串前缀
阅读全文
摘要:题目 点这里看题目。 分析 定义 当且仅当 为 的子串,题目就是要求 的所有本质不同的子串和 构成的偏序集的最小链覆盖中链的条数。 熟练地使用 Dilworth 定理,我们转而求最长反链的长度。注意到,字符串作为元素
阅读全文
摘要:自动机强迫兔子写 python,侵犯兔子兔权
阅读全文
摘要:题目 点这里看题目。 分析 以下标记子串的方法为: 表示 中从 到 的字符组成的子串。用 ( 表示开区间, [ 表示闭区间。 我们不难想到一个 DP : :以 开始的后缀,结尾字符串长度为 时的最长
阅读全文
摘要:题目 比赛界面。 T1 数据范围明示直接计算,问题就在如何快速计算。 树上路径统计通常会用到差分方法。这里有两棵树,因此我们可以做“差分套差分”,在 A 树上对 B 的差分信息进行差分。在修改的时候,我们就会在 A 上 4 个位置进行修改,每次修改会涉及 B 上 4 个位置的差分修改
阅读全文
摘要:题目 点这里看题目。 分析 由于这个问题与子串相关,那么我们就先把后缀自动机给建出来。 题目条件非常特殊——“出现至少两次”。而 fail 树上一个状态的祖先状态,根据定义,至少会在当前状态中出现一次。我们便可以知道,答案所对应的状态在 fail 树上一定呈祖孙关系。 我们可以用倍增法,求出状态 \
阅读全文
摘要:题目 点这里看题目。 分析 先对所有的模式串建立广义后缀自动机。 我们需要求出每个节点的集合,这个可以在 树上用线段树合并快速预处理。 考虑询问。由于字符串的子串就是前缀的后缀,因此我们可以对于每个前缀,处理出它在自动机上的对应的节点。那么一个子串在自动
阅读全文
摘要:题目 "点这里" 看题目。 分析 首先,我们不需要真的从 AC 自动机中把串删掉。由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了。 接着考虑询问。这是一个很基础的问题,一般我们会在 AC 自动机上面处理出每个状态的贡献和,并且将询问的字符串在 AC 自动机上面跑一
阅读全文
摘要:题目 "点这里" 看题目。 分析 首先对于模式串建立 AC 自动机,并且计算出每个状态的贡献总和。 考虑一个朴素的 DP : :当前串长度为,匹配到上的最大答案。 设在后加入字符会转移到, DP 的转移如下: $$f(i+
阅读全文
摘要:题目 "点这里" 看题目。 分析 我们想要建立一个只包含多个串的公共子串的后缀自动机。最简单的,先建立一个串的后缀自动机。 然后考虑如何进行扩展。在两个串的情况下,我们可以直接把另一个串放到后缀自动机上面跑,中途得到答案。在多个串的情况下显然就不会这么简单了。 考虑每一个串都放到后缀自动机上面跑一跑
阅读全文
摘要:什么是自动机 (有限状态)自动机是一种抽象的计算模型。一个有限状态自动机有有限个状态,每个状态可以迁移到一个或者多个状态。给定的字符串指定了如何转移。一个有限状态自动机可以表示为一个有向图。 对于一个自动机 。如果对于一个串 ,经过转移之后停在了一个“接收状态”那么
阅读全文
1