AC自动机
文章平均质量分 73
thy_asdf
我也不知道说什么...
展开
-
bzoj3172: [Tjoi2013]单词
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3172思路:每加入一个串,就给这个串的路径上所有点的sum+1,表示它的前缀都又出现了一次,然后从下向上把sum加到fail指针指向的点上就可以得到答案了。#include#include#includeconst int maxn=1000010;using name原创 2015-07-26 15:17:37 · 1583 阅读 · 0 评论 -
bzoj2938: [Poi2000]病毒
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2938思路:构建AC自动机,无限长的安全代码就是能一直在AC自动机上匹配而匹配不上任何一个危险串。依旧是匹配指针不能走到危险串的结尾点x,fail指针指向x的y也不能走,因为根据fail的定义,x这个危险串是y的后缀。找出危险节点后就是找环了,有环就有无限长的安全代码,否则没有。原创 2015-07-26 14:58:21 · 1395 阅读 · 0 评论 -
bzoj2434: [Noi2011]阿狸的打字机
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2434一个讲得很详细的题解:http://blog.csdn.net/huzecong/article/details/7769988思路:这题的想法有点神啊....先构建AC自动机,然后怎么判断一个串b是a的子串呢?用fail指针就可以了。如果a串中有节点可以通过fail原创 2015-07-26 17:50:36 · 1843 阅读 · 0 评论 -
bzoj4179: B
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=4179思路:这题和上一题不是差不多吗....就是在没有环的时候找一个最长路,长度超过L就能完成任务。#include#include#includeconst int maxn=1048580,maxq=1048580;using namespace std;int原创 2015-07-26 15:01:24 · 455 阅读 · 0 评论 -
hdu2222 Keywords Search & AC自动机学习小结
传送门:http://http://acm.hdu.edu.cn/showproblem.php?pid=2222思路:AC自动机入门题,直接上AC自动机即可。对于构建AC自动机,我们要做的只有三件事:1)构建字典树2)构建失败指针3)构建trie图(这道题好像不做这一步也能A。。。但是这一步不做是会被卡成O(n^2)的。。。)1)第一步还是比较好理解的原创 2015-07-25 21:25:17 · 646 阅读 · 0 评论 -
bzoj2553: [BeiJing2011]禁忌
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2553思路:第一件事当然是建立AC自动机。。。现在我们建好了AC自动机,那么我们就在AC自动机上走,走到一个终止节点就算我们找到一个禁忌串,然后返回根节点重新匹配。和bzoj1030类似,考虑DP,设f[i][j]为现在长度为i,走到j号节点的期望。转移就是枚举下一个字原创 2015-07-27 17:23:34 · 767 阅读 · 0 评论 -
bzoj1030: [JSOI2007]文本生成器
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1030思路:直接算好像比较困难,所以考虑先算不可读的串的个数,再拿总串数去减。不可读的串的数量就是在AC自动机上走M步而不经过结尾节点(包括结尾点和fail指向结尾点的节点)的路径条数。这个怎么求呢?设f[i][j]表示走i步,现在在j号节点的路径条数。那么f[i]原创 2015-07-27 11:58:45 · 2363 阅读 · 0 评论 -
一些还没有写的AC自动机题
一些还没写的题(好像除了前两题都比较神...)bzoj1009:这是AC自动机?这不是KMP+矩乘优化DP吗?不过好像AC自动机也可以做(死)bzoj3940:这好像是正版的AC自动机,3942好像是弱化版bzoj1444:并不知道在干什么,不过这题是AC自动机上的DPbzoj1195:AC自动机上的状压DPbzoj1559:还是AC自动机上的DP,但是输方案很恶心。。。听说还原创 2015-07-27 18:02:37 · 456 阅读 · 0 评论 -
bzoj1212: [HNOI2004]L语言
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1212思路:这题AC自动机都不用建,只要trie就好了。。。首先令f[i]表示到i的前缀能否被理解,那么答案就是f[i]==1时最大的i转移也很简单,如果f[i]==1,这个串就可以从i+1开始匹配一个新单词,因为单词长度设trie上匹配到一个长度为j的单词,那么f原创 2015-07-27 11:46:41 · 1128 阅读 · 0 评论