题意 给定n个模式串,求目标串中出现了多少个模式串。 "传送门" 思路 AC自动机模版题。 Code cpp include using namespace std; const int maxn = 1e6+10; struct Ac { int tr[maxn][26], fail[maxn], ...
分类:
其他好文 时间:
2019-08-23 00:00:58
阅读次数:
114
1 #include 2 #include 3 #include 4 #include 5 #define maxn 5000000+10 6 using namespace std; 7 char str[maxn*2]; 8 struct node{ 9 int fail;//失配指针; 10 ... ...
分类:
其他好文 时间:
2019-08-22 00:33:53
阅读次数:
82
题目大意 有$n$个字符串$s_1,s_2,\dots,s_n$,求一个最短的字符串$S$,使这$n$个字符串都是$S$的子串。 题解 我们先对这$n$个字符串建AC自动机,这里我们对于Trie上的结点$i$,定义一个状态$state_i ...
分类:
其他好文 时间:
2019-08-20 22:18:18
阅读次数:
95
首先,看清楚了,这是AC自动机不是自动AC机 引用AC自动机模板题上的一句话: ovo 在学习AC自动机之前,应该先掌握一下两个前置技能: Trie KMP AC自动机,通俗地讲,就是在Trie上跑KMP。AC自动机利用Trie的性质和KMP的思想,可以实现字符串的多模匹配。KMP是单模匹配,而它与 ...
分类:
其他好文 时间:
2019-08-20 18:40:52
阅读次数:
61
题意: 给你N个模板串,并且给你一个文本串, 现在问你这个文本串最少需要改变几个字符才能使得它不包含任何模板串. (以上字符只由A,T,G,C构成) 题解: 刚开始做这一题的时候表示很懵逼,好像没有学过这种类型的问题。 后面仔细想想,在之前的题目中,学会了求出不包含任何模板串的方案数。 这题可以转化 ...
分类:
其他好文 时间:
2019-08-19 21:32:11
阅读次数:
105
题意: 给你n个子串和一个母串,让你重排母串最多能得到多少个子串出现在重排后的母串中。 首先第一步肯定是获取母串中每个字母出现的次数,只有A T C G四种。 这个很容易想到一个dp状态dp【i】【A】【B】【C】【D】 表示在AC自动机 i 这个节点上,用了A个A,B个T,C个C,D个G。 然后我 ...
分类:
其他好文 时间:
2019-08-19 20:53:47
阅读次数:
80
题意:先给你一个不超过1000000长度的大串s;接下来输入一个n代表接下来输入的小串个数,小串长度不超过6。 小串分两种类型0和1类型。 0类型表示小串在大串中的最大匹配个数就是常规的AC自动机的做法。 1类型表示小串在大串中不能重合的最大匹配数。 依次输出结果.(所有的串只包含小写字母) 按样例 ...
分类:
其他好文 时间:
2019-08-19 20:50:39
阅读次数:
98
题目链接:HDU - 2896 题意:给你n个模式串,对应每个模式串由编号,给出m个文本串,然后你要输出对应所匹配出模式串序号,以及有多少个文本串中有模式串 思路:比起比较基本统计个数,这里我们可以用set或者map来统计模式串序号 这里总结一下新学习的last优化。 参考博客:(1) last相当 ...
分类:
其他好文 时间:
2019-08-19 13:20:06
阅读次数:
106
这两题属于AC自动机的第二种套路通过矩阵快速幂求方案数。 题意:给m个病毒字符串,问长度为n的DNA片段有多少种没有包含病毒串的。 根据AC自动机的tire图,我们可以获得一个可达矩阵。 关于这题的tire图详解可以点击这里,往下面翻,这个博主的图对于tire图讲的非常详细。 知道了什么是tire图 ...
分类:
其他好文 时间:
2019-08-19 11:30:34
阅读次数:
85
【题目链接】 https://loj.ac/problem/10057 【题意】 原题来自:HDU 2222 给定 n 个长度不超过 50 的由小写英文字母组成的单词准备查询,以及一篇长为 m 的文章,问:文中出现了多少个待查询的单词。多组数据。 【题解】 模板题 【代码】 1 #pragma GC ...
分类:
其他好文 时间:
2019-08-17 00:57:33
阅读次数:
84