AC自动机
Rainbow6174
这个作者很懒,什么都没留下…
展开
-
POJ 2778 DNA Sequence 题解&代码
调了三个小时…2333333感觉自己傻逼了是一道很有(ma)趣(fan)的AC自动机+矩阵快速幂 我们需要算出的初始矩阵是dp[i][j]是用一步从自动机的第i个位置到第j个位置有几种不产生病毒DNA的方式 然后乘n次就得到答案辣【答案当然是从初始位置(0)到最终位置i的方式数之和被vim坑了一发…还是不太习惯,平时写习惯的矩阵快速幂迷之CE… 后来发现初始矩阵算对了但是还是答案太少…感谢样例原创 2016-03-01 20:32:05 · 494 阅读 · 0 评论 -
HDU2222 Keywords Search 题解&代码
题意:多组数据,每组数据有n个字符串作为字典,然后给出另外一个字符串,询问这个新的字符串中有几个字典中的单词。 多个匹配串对单字符串匹配,AC自动机是标准解法,算是测试模板了【笑 然而RE了一发WA了一发…没看清数据范围对于字典中的字符串建立trie树和fail指针,然后对待匹配串匹配即可 有一些奇怪的小细节譬如字典中可能有多个相同字符串,以及判重问题…恩还是很好解决的嘛#include <i原创 2016-03-02 19:40:01 · 504 阅读 · 0 评论 -
POJ3691 DNA repair 题解&代码
我心好痛啊…f**k -1改成0x3f3f3f3f就过了…这么玄妙的东西我卡了半个月我服 等老师再研究一下吧,我现在不想看到这道题 //一道题的代码几乎能背过是什么体验 注释不删,等待第二版更新#include <cmath>#include <climits>#include <cstdlib>#include <iostream>#include <queue>#include原创 2016-02-17 21:01:42 · 908 阅读 · 0 评论 -
BZOJ1030 JSOI2007 文本生成器 题解&代码
题意:给出n个匹配串,询问:对于长度为m的串,有多少个串至少包含一个匹配串(答案对10007取模) 题解: “至少包含一个匹配串的长度为m的串”,那么很容易转化为“所有串除去不包含任何匹配串的长度为m的串” 然后就是喜闻乐见的AC自动机上的dp了,dp方程显然是dp[i][j]表示长度为i的串匹配到j位时有多少不包含任何匹配串 有:dp[i][ch[j][k]]+=dp[i-1][j] 即原创 2016-03-11 16:30:13 · 625 阅读 · 0 评论 -
BZOJ2938 POI2000 病毒 题解&代码
题意:给出n个病毒代码,判断是否有无限长度的代码满足:不包含任何病毒代码。 题解: 看到多字符串匹配,就想到AC自动机【这语气好奇怪 AC自动机建好fail指针,然后从根向下dfs查找,所有实节点都用flag标记,如果找到了一个不经过病毒路径的环,那么就存在无限长度代码满足不包含任何病毒代码/***************************************************原创 2016-03-11 16:45:46 · 1292 阅读 · 0 评论 -
AC自动机模板
啦啦啦二十分钟默出来编译通过,一会去试几道题好啦#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 10005;const int maxm = 100;int n, tot, temp;int ch[maxn][maxm], fail[maxn], fla原创 2016-03-02 15:49:45 · 512 阅读 · 0 评论