ac自动机
Quack_quack
这个作者很懒,什么都没留下…
展开
-
两个AC自动机+矩阵的题
POJ 2778 DNA Sequence 题意:给出n个匹配串,已知原串的长度为m,求原串中不包含任何一个匹配串的情况数。 先把n个匹配串建成AC自动机,然后根据trie图建矩阵,最后矩阵快速幂求解。 建AC自动机要注意这些矩阵的题,next数组必须有值。初始值为-1方便更新。 建矩阵的时候要注意trie图只是根据next数组来建的,和fail半毛钱关系都没有。那么为什么要用AC自动机呢?原创 2015-12-25 00:18:48 · 584 阅读 · 0 评论 -
HDU 2825 Wireless Password AC自动机+状压DP
题意: 给出密码的长度n,可能含有密码字串的个数m和密码至少含有密码字串的个数k,求有多少种情况。 分析: 因为这个题不是问的密码字串必须全部包含,所以不能矩阵加速= = 果然n的大小变得很小只有25 可以用状压DP来做,具体是每个AC自动机内的节点都编个号,然后getfail的时候像以前矩阵加速getfail一样,假设当前节点的编号是2^k,当前节点的fail指向的点的编号是2^j,那么原创 2015-12-30 22:06:55 · 514 阅读 · 0 评论 -
HDU 2896 病毒侵袭 AC自动机
#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<set>using namespace std;struct ACautomata{ int next[100010][127],idx[100010],fail[100010],last[100010],num,root;原创 2015-12-23 21:11:25 · 344 阅读 · 0 评论 -
HDU 3065 病毒侵袭持续中 AC自动机
#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<set>using namespace std;char key[1010][52],s[2000010];int ans[1010],n;struct ACautomata{ int next[50010][26],fail[原创 2015-12-23 21:17:01 · 382 阅读 · 0 评论 -
ZOJ 3430 detect the virus AC自动机
#include<stdio.h>#include<iostream>#include<cstring>#include<queue>using namespace std;int n,m,alen,blen,a[5100],b[5600];struct ACatuomata{ int next[55600][256],fail[55600],idx[55600],last[55原创 2015-12-23 21:25:38 · 426 阅读 · 0 评论 -
AC自动机模板
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;char s[1000010];struct ACautomata{ int next[500010][26],fail[500010],cnt[500010],last[500010],num,root;原创 2015-12-23 20:58:19 · 392 阅读 · 0 评论