AC自动机
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
LOJ#2278. 「HAOI2017」字符串【差异区间长度限制下的字符串匹配】
题目描述:link题目分析:相当于可以将 pip_ipi 中的一段长度为 kkk 的区间变为通配符然后进行匹配。那么 S[l...r]S[l...r]S[l...r] 能和 pi[1...L]p_i[1...L]pi[1...L] 匹配的条件是存在一个 pip_ipi 的前缀 pi[1...j]p_i[1...j]pi[1...j],使得 S[l...l+j−1]S[l...l+j-1]S[l...l+j−1] 与 pi[1...j]p_i[1...j]pi[1...j] 匹配,S[l原创 2020-07-07 22:19:27 · 198 阅读 · 0 评论 -
HDU3341 Lost's revenge【AC自动机 + DP(状态编号)】
题目描述:N(<=50)个有效基因串,每个长度<=10,你有的基因串M,长度<=40,重排M,使得其包含的有效基因串数最多(可重叠),输出最多个数。基因只有四个字母AGCT。题目分析:有效基因串建立AC自动机。f[a][b][c][d][i]f[a][b][c][d][i]f[a][b][c][d][i]表示分别用了a,b,c,da,b,c,da,b,c,d个字母A,G...原创 2020-01-19 22:28:30 · 140 阅读 · 0 评论 -
HDU3247 Resource Archiver【AC自动机 + BFS】
题目描述:n(<=10)个资源串,每个长度<=1000,m(<=1000)个病毒串,总长度<=50000.求最短的一个串长度,使得它包含所有的资源串但不包含任意一个病毒串。题目分析:设f[s][i]f[s][i]f[s][i]表示包含的资源串状态为sss,当前在AC自动机上的iii号点需要的最短步数。cnt[i]cnt[i]cnt[i]表示iii号点代表的资源串状态...原创 2020-01-18 17:34:27 · 160 阅读 · 0 评论 -
HDU2825 Wireless Password【AC自动机 + DP】
题目描述:长度为n<=25的密码,至少包含m<=10个神奇单词中的k个(单词长度<=10),求所有可能的密码个数。题目分析:设f[i][s][j]f[i][s][j]f[i][s][j]表示用了iii个字母,已经包含的神奇单词的状态为sss,当前在AC自动机上的jjj号点的方案数。转移为f[i+1][s∣word[ch[j][c]]][ch[j][c]]+=f[i][s]...原创 2020-01-18 15:34:18 · 139 阅读 · 0 评论 -
HDU2243 考研路茫茫——单词情结【AC自动机 + 矩阵快速幂】
题目描述:背了N个词根,长度不超过L,只由小写字母组成的,至少包含一个词根的单词,一共可能有多少个呢?比如一共有2个词根 aa 和 ab ,则可能存在104个长度不超过3的单词,分别为(2个) aa,ab,(26个)aaa,aab,aac…aaz,(26个)aba,abb,abc…abz,(25个)baa,caa,daa…zaa,(25个)bab,cab,dab…zab。0<...原创 2020-01-18 15:10:19 · 187 阅读 · 0 评论 -
HDU2896 病毒侵袭【AC自动机】
题目描述:给出n个病毒特征码和m个源码,问每个源码中包含哪些病毒,将病毒按编号由小到大输出,保证最多包含三个病毒。n<=500,病毒长度<=200,m<=1000,源码长度<=10000.题目分析:在AC自动机上存下每个节点对应的<=3个病毒即可。Code:#include<bits/stdc++.h>using namespace std;...原创 2020-01-18 11:00:17 · 197 阅读 · 0 评论 -
HDU 4511 小明系列故事——女友的考验 【AC自动机+DP】
限制条件用AC自动机找出合法状态但是这题的DP并不是矩阵加速的那种,转移需要涉及到实际点所以定义 dp[i][j] :当前点为 i,在自动机上为 j的最小路程,枚举点转移顺带一提,枚举转移是n*(n+自动机节点数),因为除了自动机的根节点其它点唯一对应一个编号。#include<cstdio>#include<cmath>#include<cs...原创 2019-01-01 21:41:35 · 201 阅读 · 0 评论 -
BZOJ 3881: [Coci2015]Divljak 【AC自动机fail树】
题面:Alice有n个字符串S1,S2...SnS_1,S_2...S_nS1,S2...Sn,Bob有一个字符串集合T,一开始集合是空的。接下来会发生q个操作,操作有两种形式:“1 P”,Bob往自己的集合里添加了一个字符串P。“2 x”,Alice询问Bob,集合T中有多少个字符串包含串SxS_xSx。(我们称串A包含串B,当且仅当B是A的子串)1 <= n,q <...原创 2019-03-31 09:12:55 · 169 阅读 · 0 评论 -
BZOJ 3172: [Tjoi2013]单词【AC自动机】
题目传送门题目分析:题意结合一下样例应该就能理解。。每个串在自动机走过的路径上的点cnt+1。fail树中子树的和就是一个点代表的串的出现次数。最后统计的时候可以直接借助建fail树时的队列,不用建边什么的。这道题后缀自动机好像也能做,把每个串放进去跑就行了。至于后缀数组反正我不会。。比较一下还是AC自动机好打一些。Code:#include<cstdio>#incl...原创 2019-04-01 15:53:56 · 133 阅读 · 0 评论