
AC自动机
文章平均质量分 62
BraketBN
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【HDU2825】Wireless Password【AC自动机】【状压DP】
感觉挺不错的题。 dp[i][j][mask] 表示长度为i的字符串,走到AC自动机上第j个节点时,状态为mask的方案数。 将每个mask选择了的字符串的个数预处理出来,统计答案时只需要将个数不小于k的贡献加上。 #include #include #include #define cls(a, x) memset(a, x, sizeof(a)) usi原创 2016-02-10 22:04:10 · 1260 阅读 · 0 评论 -
【Uva11468】Substring【AC自动机】【概率DP】
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=31655 大白上的题。 AC自动机经典题型。 论如何忘记写getfail()。 /* Footprints In The Blood Soaked Snow */ #include #include #include using namesp原创 2016-03-18 15:08:00 · 409 阅读 · 0 评论 -
【BZOJ1030】[JSOI2007]文本生成器【AC自动机】【计数DP】
http://www.lydsy.com/JudgeOnline/problem.php?id=1030 AC自动机经典题型,数据不大,不用矩阵快速幂优化。 /* Footprints In The Blood Soaked Snow */ #include #include #define cls(a, x) memset(a, x, sizeof(a)) using namesp原创 2016-03-19 14:36:53 · 627 阅读 · 0 评论 -
【Uva11019】Matrix Matcher【AC自动机】【二维字符串匹配】
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33057 二维字符串匹配...大白上的题。 把匹配串的每一行当成一个串insert到AC自动机里,然后用模板串的每一行find。 如果匹配成功,那么在这个矩阵的左上角加一。 最后扫一边矩阵,如果有个地方的权值等于x,那么说明这是个匹配位置。 /* Foot原创 2016-03-19 16:17:21 · 608 阅读 · 0 评论 -
【BZOJ3942】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
【题目链接】 记录一个当前串长为i时,在AC自动机上的哪个节点。找到匹配串时,直接O(1)跳到那个节点就行了。 /* Pigonometry */ #include #include #include using namespace std; const int maxn = 1000005, maxq = maxn; int n, pos[maxn], q[maxq]; char原创 2016-04-28 23:03:48 · 723 阅读 · 0 评论 -
【BZOJ3940】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
【题目链接】 【BZOJ3942题解】的加强版,但是没有什么区别。 /* Pigonometry */ #include #include #include using namespace std; const int maxn = 1000005, maxq = maxn; int n, pos[maxn], q[maxq]; char s[maxn], str[maxn], a原创 2016-04-28 23:05:31 · 616 阅读 · 0 评论 -
【总结】AC自动机
在应用中,AC自动机大多数是与DP结合起来用的,当然也有其他类型的应用。 最经典的应用之一: 给出一些串,这些串是“病毒串”,问有多少种长度为n且不包含病毒串(或者至少出现一次)的字符串。 这类问题中,病毒串长度一般很小,总长度一般不超过50,而n却很大,一般在10^9以上。 如果只有一个病毒串,那么我们只需要KMP就好了,比如 【BZOJ1009: [HNOI200原创 2016-04-19 10:08:20 · 542 阅读 · 0 评论 -
【CodeChef-LYRC】Music & Lyrics【AC自动机】
【题目链接】 给出W个模板串和N个匹配串,问每个模板串在所有匹配串中一共出现了多少次。 先把所有模板串放进AC自动机,然后用每个匹配串在AC自动机上跑,走过的节点权值++。最后在fail树上做个前缀和,查询每个模板串的结尾节点的权值就好了。 一开始求前缀和写了深搜,但是看了策爷代码,发现可以利用求fail时的广搜队列来跑前缀和,orz%%%。 模板串和匹配串长度原创 2016-04-21 07:49:19 · 763 阅读 · 0 评论 -
【HDU4787】GRE Words Revenge【AC自动机】【AC自动机合并】
【题目链接】 调了4个小时多... /* Forgive me Not */ #include #include #include using namespace std; const int maxn = 100005, maxl = 5000005, maxq = maxn; int n, q[maxq]; char str[maxl], tmp[maxl]; struc原创 2016-06-12 22:28:52 · 851 阅读 · 0 评论