随笔分类 -  字符串-自动机

1
摘要:# 题目 有一次机灵鬼和学长可爱多打比赛, 可爱多不会做一道字符串题,机灵鬼做了很久终于做出来了,这是机灵鬼第一次做出可爱多不会的题。 可爱多觉得很丢人,于是准备研究字符串。可爱多精通 kmp 算法。kmp 算法的输入是一个字符串 S,该算法的核心是对 阅读全文
posted @ 2023-06-12 21:41 crashed 阅读(138) 评论(0) 推荐(0) 编辑
摘要:正在更新(指咕咕咕) 阅读全文
posted @ 2023-05-09 21:21 crashed 阅读(1518) 评论(5) 推荐(14) 编辑
摘要:「NOI2022」移除石子出题人对选手没有同理心.jpg 阅读全文
posted @ 2022-09-03 10:57 crashed 阅读(319) 评论(0) 推荐(0) 编辑
摘要:「UOJ747」面基之路 难得有一道我做得起的水题。 尝试二分答案,判定等价于检查是否存在一个点,使得在规定时间内 hehe 蚤和网友们都可以走到该点。检查能否走到某个结点是容易的,检查某条边上是否存在一个点相当于是检查集合的交集是否为空,转化成区间的并集是否覆盖了整条边,可以将区间排序之后扫描端点 阅读全文
posted @ 2022-08-10 15:53 crashed 阅读(184) 评论(1) 推荐(1) 编辑
摘要:题目 点这里看题目。 分析 ~~从一开始就知道正确的思路,到最后都没有写成正确的算法~~。 给定一个字符串 T,考虑怎么验证它能不能由 S 和另外一个括号串合并起来。 一个自然的做法是,写一个 DP:设 fi,j 表示 T[1,i] 能否由 S[1,j] 和另一个括号串前缀 阅读全文
posted @ 2022-08-10 12:13 crashed 阅读(109) 评论(0) 推荐(1) 编辑
该文被密码保护。
posted @ 2022-05-29 11:32 crashed 编辑
摘要:题目 点这里看题目。 分析 首先自然是研究一下 w() 有没有什么比较好的性质。 这个其实猜都猜得到,w() 显然应当存在一定的倍增结构。具体地来说,我们考察一种特殊情况: 定义 Wn=w(0,2n1),Wn¯=w(2n,2n+11) 阅读全文
posted @ 2022-05-15 17:07 crashed 阅读(259) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 定义 ab 当且仅当 ab 的子串,题目就是要求 S[l:r] 的所有本质不同的子串和 构成的偏序集的最小链覆盖中链的条数。 熟练地使用 Dilworth 定理,我们转而求最长反链的长度。注意到,字符串作为元素 阅读全文
posted @ 2022-05-15 16:21 crashed 阅读(54) 评论(0) 推荐(1) 编辑
摘要:自动机强迫兔子写 python,侵犯兔子兔权 阅读全文
posted @ 2022-03-28 20:00 crashed 阅读(68) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2021-07-14 21:52 crashed 阅读(0) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 以下标记子串的方法为: S[l,r] 表示 S 中从 lr 的字符组成的子串。用 ( 表示开区间, [ 表示闭区间。 我们不难想到一个 DP : f(i,k):以 i 开始的后缀,结尾字符串长度为 k 时的最长 阅读全文
posted @ 2020-08-04 12:02 crashed 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题目 比赛界面。 T1 数据范围明示直接O(n2)计算,问题就在如何快速计算。 树上路径统计通常会用到差分方法。这里有两棵树,因此我们可以做“差分套差分”,在 A 树上对 B 的差分信息进行差分。在修改的时候,我们就会在 A 上 4 个位置进行修改,每次修改会涉及 B 上 4 个位置的差分修改 阅读全文
posted @ 2020-06-13 21:59 crashed 阅读(209) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 由于这个问题与子串相关,那么我们就先把后缀自动机给建出来。 题目条件非常特殊——“出现至少两次”。而 fail 树上一个状态的祖先状态,根据定义,至少会在当前状态中出现一次。我们便可以知道,答案所对应的状态在 fail 树上一定呈祖孙关系。 我们可以用倍增法,求出状态 \ 阅读全文
posted @ 2020-05-30 22:32 crashed 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 第一步,考虑转换一下题意。 设a[i]为任意字符串的第i个字符(从1标号)。对于两个在原题中要求相等的串——siski+1。令l=|si|n=|S|si[1]=S[p](位置对应)。则: \(s_i=S[p]S[ 阅读全文
posted @ 2020-05-30 11:04 crashed 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题目 点这里看题目。 分析 先对所有的模式串建立广义后缀自动机。 我们需要求出每个节点的endpos集合,这个可以在 fail 树上用线段树合并快速预处理。 考虑询问。由于字符串的子串就是前缀的后缀,因此我们可以对于每个前缀,处理出它在自动机上的LCS对应的节点。那么一个子串在自动 阅读全文
posted @ 2020-05-29 13:31 crashed 阅读(168) 评论(0) 推荐(0) 编辑
摘要:题目 "点这里" 看题目。 分析 首先,我们不需要真的从 AC 自动机中把串删掉。由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了。 接着考虑询问。这是一个很基础的问题,一般我们会在 AC 自动机上面处理出每个状态的贡献和,并且将询问的字符串在 AC 自动机上面跑一 阅读全文
posted @ 2020-05-19 14:02 crashed 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目 "点这里" 看题目。 分析 首先对于模式串建立 AC 自动机,并且计算出每个状态p的贡献总和con(p)。 考虑一个朴素的 DP : f(i,p):当前串长度为i,匹配到p上的最大答案。 设在p后加入字符c会转移到t(p,c), DP 的转移如下: $$f(i+ 阅读全文
posted @ 2020-05-18 14:06 crashed 阅读(133) 评论(0) 推荐(0) 编辑
摘要:题目 "点这里" 看题目。 分析 我们想要建立一个只包含多个串的公共子串的后缀自动机。最简单的,先建立一个串的后缀自动机。 然后考虑如何进行扩展。在两个串的情况下,我们可以直接把另一个串放到后缀自动机上面跑,中途得到答案。在多个串的情况下显然就不会这么简单了。 考虑每一个串都放到后缀自动机上面跑一跑 阅读全文
posted @ 2020-05-16 08:45 crashed 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目 "点这里" 看题目。 分析 补习知识: 既然可以求出原串中不同的子串的个数,那么我们同样可以求出含重复子串的个数,同样是dpg(u):从u节点出发含重复的子串的数量。 转移: g(u)=|endpos(u)|+(u,v)DAWGg(v) 因为可 阅读全文
posted @ 2020-05-16 08:43 crashed 阅读(121) 评论(0) 推荐(0) 编辑
摘要:什么是自动机 (有限状态)自动机是一种抽象的计算模型。一个有限状态自动机有有限个状态,每个状态可以迁移到一个或者多个状态。给定的字符串指定了如何转移。一个有限状态自动机可以表示为一个有向图。 对于一个自动机 S。如果对于一个串 A,经过转移之后停在了一个“接收状态”那么 A 阅读全文
posted @ 2020-05-16 08:35 crashed 阅读(234) 评论(0) 推荐(2) 编辑

1
点击右上角即可分享
微信分享提示