
AC自动机
bestFy
世界上最最最渣的oier.
展开
-
uva10679 I Love Strings!!
题面在这里题意:给你一个文本串和若干模式串,问每个模式串是否在文本串中出现过。做法:AC自动机模板题。对于重复的串的处理,可以在每个节点处挂一个链表记录模式串的编号。代码:#include#include#include#include#include#include#include#includeusing namespace std;原创 2018-01-11 09:31:47 · 278 阅读 · 0 评论 -
uva11468 Substring
题面在这里题意:给一些模式串。 再给n个字符和它们出现的概率,问用这些字符随机构造一个长为L的字符串,不包含任意一个模式串的概率是多少。做法:用模式串建ac自动机。 然后问题相当于从字典树的根开始跑,不经过任意一个单词结尾的节点跑L步的概率。 我们把单词结尾的节点打标记。假如一个点对应的fail节点也打了标记,它也要打上标记,因为以这个节点为结尾的后缀在模式串中出现过原创 2018-01-11 15:59:18 · 362 阅读 · 0 评论 -
hdu2896 病毒侵袭
题面在这里题意:给n个模式串和m个文本串,问有几个文本串包含任意一个模式串,并且输出每个包含任意模式串的文本串,包含的是哪几个模式串。做法:ac自动机模板。 整天模板题做做还有什么希望(大雾)模板居然调了一个小时代码:/************************************************************* Probl原创 2018-01-12 00:16:26 · 288 阅读 · 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 · 367 阅读 · 0 评论 -
hdu3247 Resource Archiver
题面在这里题意:给你n个资源串,m个病毒串,都由01组成。需要构造一个新串使得n个资源串都是这个新串的子串,并且该新串不包含任意一个病毒串。求新串的最小长度。 2 每个资源串长度做法:对于所有的病毒串和资源串,把它们都扔进AC自动机处理。 对于每一个节点处理出是否含病毒,以及包含了哪几个资源串(状压)。 f[i][j]表示当前使用的资源串状压为i,现在在j这个节点的原创 2018-01-25 18:47:04 · 354 阅读 · 0 评论