AC
。。。
ygmjsjdboy
这个作者很懒,什么都没留下…
展开
-
【AC自动机】You Are Given Some Strings...
门 题目 求n个字符串两两拼接组成的n*n个字符串在文本串中出现次数 题解 和很多两个拼接的题类似 我们正反分别作出答案,然后枚举拼接位置,累加上左边乘右边 //CF1202E You Are Given Some Strings... #include<bits/stdc++.h> using namespace std; const int N=2e5+10; struct ACM{ int t[N][30],all; int f[N],las[N],val[N]; long long原创 2020-05-30 11:49:22 · 165 阅读 · 0 评论 -
【AC自动机】病毒
门 题目 是否能构造出无限长的且不存在模式串的文本串 题解 AC自动机建好后,发现文本串就是在Tire图上一直乱跑,我们需要找到一个环,使它经过根节点,且环中没有终止节点 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int t[N][3],all; int f[N];bool val[N]; void putin(char *s) { int p=0; for(int i=0;s[i];i++) {原创 2020-05-30 07:37:46 · 148 阅读 · 0 评论 -
【AC自动机】Indie Album
假装是门 题目 多个模式串和多个文本串匹配 题解 将所有模式串和文本串都放到AC自动机里 遍历整个Tire树,将经过的点点亮,如果遇见文本串的终结点,就询问对应模式串的终结点的Fail树上的子树被点亮的个数 需要将Fail树重新建图,并用dfs序维护子树信息 注请务必明确哪一个是文本串,哪一个是模式串 以下是不想再看到的恶心代码 #include<bits/stdc++.h> #define re register using namespace std; const int N=1e6+10原创 2020-05-30 07:32:32 · 114 阅读 · 0 评论 -
【AC自动机】【例题】AC自动机
洛谷P3796 题目: 都说了是AC自动机模板。。。 题解: get_fail每次都很恼火 因为优化很多,但隔这么久,第二次看还是更懂一点了 下一次应该就把板子定了吧。。。 #include<bits/stdc++.h> #define x s[i]-'a' using namespace std; const int N=1e6+10; int T; int n; int ans[1...原创 2019-10-16 22:00:45 · 171 阅读 · 0 评论 -
【dp】【AC自动机】文本生成器
门 记住常见DP+ACM的套路:dpi,jdp_{i,j}dpi,j表示长度i,节点j,可能多加一维表示状态 题目 长度为m的最少包含一个模式串的文本串的方案数 题解 AC自动机建好后思考dp转移 dpi,j,0/1dp_{i,j,0/1}dpi,j,0/1表示长度为i,状态在j号节点,0/1表示是否含有模式串 如果j为终止节点 dpi,j,1=∑dpi,k,1+dpi,k,0dp_{i,j,1}=\sum dp_{i,k,1}+dp_{i,k,0}dpi,j,1=∑dpi,k,1+dpi,k,0原创 2020-05-28 21:01:49 · 155 阅读 · 0 评论