
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 · 611 阅读 · 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 · 540 阅读 · 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 · 375 阅读 · 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 · 415 阅读 · 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 · 454 阅读 · 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 · 419 阅读 · 0 评论