AC自动机
文章平均质量分 73
thy_asdf
我也不知道说什么...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj3172: [Tjoi2013]单词
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3172 思路:每加入一个串,就给这个串的路径上所有点的sum+1,表示它的前缀都又出现了一次,然后从下向上把sum加到fail指针指向的点上就可以得到答案了。 #include #include #include const int maxn=1000010; using name原创 2015-07-26 15:17:37 · 1614 阅读 · 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 · 1439 阅读 · 0 评论 -
bzoj2434: [Noi2011]阿狸的打字机
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2434 一个讲得很详细的题解:http://blog.youkuaiyun.com/huzecong/article/details/7769988 思路:这题的想法有点神啊.... 先构建AC自动机,然后怎么判断一个串b是a的子串呢?用fail指针就可以了。如果a串中有节点可以通过fail原创 2015-07-26 17:50:36 · 1887 阅读 · 0 评论 -
bzoj4179: B
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=4179 思路:这题和上一题不是差不多吗....就是在没有环的时候找一个最长路,长度超过L就能完成任务。 #include #include #include const int maxn=1048580,maxq=1048580; using namespace std; int原创 2015-07-26 15:01:24 · 508 阅读 · 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 · 695 阅读 · 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 · 820 阅读 · 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 · 2425 阅读 · 0 评论 -
一些还没有写的AC自动机题
一些还没写的题(好像除了前两题都比较神...) bzoj1009:这是AC自动机?这不是KMP+矩乘优化DP吗?不过好像AC自动机也可以做(死) bzoj3940:这好像是正版的AC自动机,3942好像是弱化版 bzoj1444:并不知道在干什么,不过这题是AC自动机上的DP bzoj1195:AC自动机上的状压DP bzoj1559:还是AC自动机上的DP,但是输方案很恶心。。。听说还原创 2015-07-27 18:02:37 · 505 阅读 · 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 · 1159 阅读 · 0 评论
分享