摘要: 学习AC自动机之前,必须先得把字典树和KMP算法给理解透了,否则会让你吃尽苦头,切不可本末倒置。 参考文献:http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdf 简单介绍一下AC自动机: 1.必须得先建一颗字典树,这是构建AC自动的基本结构,好比建房子的地基。 2.接下来就是AC自动机的构造了,里面最强大的就是fail指针(失败指针)了,fail指针的作用是当前字符匹配失败的时候字符跳转到下一个和此字符有最长公共前缀的字符,如果没有的话直接跳到根节点,且跳转必是深度深的向深度浅的跳转。 通过深度跳转的规律可知,我们... 阅读全文
posted @ 2013-03-14 20:02 Mr. Ant 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2841题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695hdu 4135题目大意:输入一个a,b,n。 让你求a~b中有多少个数和n互素。1和任何数都互素。解题思路: 看到题我们不可能对i属于a~b进行遍历,然后求i是否和n有公约数,有则不互素,无则互素。时间复杂度是n^2 n最大100000,TLE。 这题要用到容斥定理。 我们可以先这样想... 阅读全文
posted @ 2013-03-14 17:21 Mr. Ant 阅读(950) 评论(0) 推荐(1) 编辑