
AC自动机
IZUMIXINGI
这个作者很懒,什么都没留下…
展开
-
[AC自动机 + DP]POJ 2778 E - DNA Sequence
需要注意的几个点:1.将trie树每个结点转化为一个状态,M[i][j]表示从状态i走一步到状态j的方法数2.使用到了矩阵快速幂3.若一点fail指向的节点有毒,该点也有毒,因为fail指向字符串是该点字符串的后缀,该部分可以使用深度优先搜索完成。4.将带毒节点贡献置零#include<iostream>#include<string.h>#include<queue>using namespace std;const int N = 105;cons原创 2020-09-01 22:01:55 · 203 阅读 · 1 评论 -
[AC自动机]ZOJ.3430 Detect the Virus
先解码,一定注意因为这个码的范围在0~255之间,char型存不下,所以改为int型存储。因为没有在每次query使memset vis为0,wa了一个小时!#include<bits/stdc++.h>#define debug(x) cout<<#x<<" is "<<x<<endl#define pb push_backusing namespace std;const int N = 5e4 + 5;const int char原创 2020-09-01 16:59:02 · 134 阅读 · 0 评论 -
[AC自动机基础题]HDU2222 Keywords Search
AC自动机在trie树上加了fail pointer使得文本串可以不回溯的计算匹配的模板串的个数,每访问一个节点,就将其潜在的与其后缀相等的模板串结果加起来。构建则不赘述。#include<bits/stdc++.h>using namespace std;const int N = 1e6 + 5;const int char_num = 26;int Trie[N][char_num];int cntword[N];int fail[N];int index = 0;vo原创 2020-08-29 20:06:01 · 148 阅读 · 0 评论