AC自动机
bestFy
世界上最最最渣的oier.
展开
-
uva10679 I Love Strings!!
题面在这里 题意: 给你一个文本串和若干模式串,问每个模式串是否在文本串中出现过。 做法: AC自动机模板题。对于重复的串的处理,可以在每个节点处挂一个链表记录模式串的编号。 代码: #include #include #include #include #include #include #include #include using namespace std;原创 2018-01-11 09:31:47 · 245 阅读 · 0 评论 -
uva11468 Substring
题面在这里 题意: 给一些模式串。 再给n个字符和它们出现的概率,问用这些字符随机构造一个长为L的字符串,不包含任意一个模式串的概率是多少。 做法: 用模式串建ac自动机。 然后问题相当于从字典树的根开始跑,不经过任意一个单词结尾的节点跑L步的概率。 我们把单词结尾的节点打标记。假如一个点对应的fail节点也打了标记,它也要打上标记,因为以这个节点为结尾的后缀在模式串中出现过原创 2018-01-11 15:59:18 · 329 阅读 · 0 评论 -
hdu2896 病毒侵袭
题面在这里 题意: 给n个模式串和m个文本串,问有几个文本串包含任意一个模式串,并且输出每个包含任意模式串的文本串,包含的是哪几个模式串。 做法: ac自动机模板。 整天模板题做做还有什么希望(大雾)模板居然调了一个小时 代码: /************************************************************* Probl原创 2018-01-12 00:16:26 · 258 阅读 · 0 评论 -
poj3691 DNA repair
题面在这里 题意: 给你N (1 ≤ N ≤ 50)个只由“A”,“G”,“C”,“T”四个字母组成的病毒串(len 给你一个文本串(len 做法: ac自动机+dp。 将病毒串建立ac自动机,题目要求的即是文本串不能经过任何ac自动机上的单词节点。 f[i][j]表示第i个节点,当前在文本串第j位,最少改变多少个字符。 枚举下一位是什么字母转移。 可以用记搜实现。原创 2018-01-13 15:01:34 · 334 阅读 · 0 评论 -
hdu3247 Resource Archiver
题面在这里 题意: 给你n个资源串,m个病毒串,都由01组成。需要构造一个新串使得n个资源串都是这个新串的子串,并且该新串不包含任意一个病毒串。求新串的最小长度。 2 每个资源串长度 做法: 对于所有的病毒串和资源串,把它们都扔进AC自动机处理。 对于每一个节点处理出是否含病毒,以及包含了哪几个资源串(状压)。 f[i][j]表示当前使用的资源串状压为i,现在在j这个节点的原创 2018-01-25 18:47:04 · 317 阅读 · 0 评论