
AC自动机
a1s4z5
这个作者很懒,什么都没留下…
展开
-
hdu 2222 Keywords Search
学过SAM回头才看懂AC自动机我真是太弱了问模式串有多少个在给出的模式串中出现过AC自动机模板题#include<bits/stdc++.h>using namespace std;const int maxn = 1123456,maxLen = 26;int toid(char c){ return c - 'a'; }queue<int> Q;struct ACMA{ int nex原创 2016-09-12 19:49:54 · 244 阅读 · 0 评论 -
Hdu 2896 病毒侵袭
依然是AC自动机模板题注意ASCII码可见字符包括空格应该都能一次敲过去?#include<bits/stdc++.h>using namespace std;const int maxn = 112345,maxLen = 130;int toid(char c){ return c; }queue<int> Q;struct ACMA{ int nex[maxn][maxLen],fa原创 2016-09-13 09:43:31 · 292 阅读 · 0 评论 -
Bzoj 3530 数数
求[1,n](n≤101000)[1,n](n\le 10^{1000})中不包含给定数字作为字串的数字个数(mod109+7)\pmod{10^9+7},给定数字总长度≤1500\le 1500。一眼看过去是一个用AC自动机表示状态,用数位dp的模板题注意前导零是不会被统计到的具体见代码#include<bits/stdc++.h>using namespace std;const int ma原创 2016-10-11 16:54:04 · 317 阅读 · 0 评论 -
Hdu 2243 考研路茫茫——单词情结
求长度小于n(1≤n<231)n(1 \le n < 2^{31})的串中包含至少一个模式串的个数。模式串总长度不超过25。市面上的题解几乎都是反着考虑。但是其实正着考虑也是可以的。我们在AC自动机的状态上额外添加一个状态AcpAcp,也就是接受态。对于两个状态St→cxSt \xrightarrow c x如果xx是某一个模式串的结尾,那么重定向St→cAcpSt \xrightarrow c A原创 2016-10-11 17:35:36 · 461 阅读 · 0 评论 -
Codeforces 347D - Lucky Common Subsequence
给出两个长100100的字符串aa,bb。再额外给出一个长100100的字符串 virusvirus。询问aa和bb最长的没有字串是virusvirus的公共子序列。输出这个子序列。在经典的LCSLCS的dpdp解法上再加一维,记录当前的最长公共子序列匹配virusvirus的长度。第三维转移可以用KMPKMP或者ACAC自动机。#include<bits/stdc++.h>using names原创 2016-10-31 13:39:36 · 505 阅读 · 0 评论