2013年8月25日

poj3461 Oulipo

摘要: 题目链接:http://poj.org/problem?id=3461题意就是求模式串在一个主串中出现的次数KMP的简单应用代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define maxn 1000100 7 int f[maxn]; 8 char s1[maxn]; 9 char s2[maxn];10 int n,m;11 void callfail()12 {13 int i,j=0,k=-1;14 f[0]=-1;15 while(j<n)16 {17 ... 阅读全文

posted @ 2013-08-25 22:35 GyyZyp 阅读(150) 评论(0) 推荐(0) 编辑

hdu2594 Simpsons’ Hidden Talents

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594思路:其实就是求相同的最长前缀与最长后缀KMP算法的简单应用;假设输入的两个字符串分别是s1,s2。s1后面再上一个任意的大写字母,然后再将串s2连在s1的后面,再在后面加上一个任意的大写字母(注意应该与前面所加的字母不同),那么对当前的s1串求其失败函数f,那么f[n-1]即为最大的匹配数,是不是很简单啊!!!至于中间和后面为什么加大些字母,留给读者自己思考咯代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace s 阅读全文

posted @ 2013-08-25 18:23 GyyZyp 阅读(147) 评论(0) 推荐(0) 编辑

hdu 4552 怪盗基德的挑战书

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4552思路:其实可以用KMP+DP解决我这里给出后缀数组的解题方法思路:初始化ans=n(n为字符串的长度)然后你会发现答案就是ans加上每个后缀与最长后缀的最长公共前缀的长度代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define maxn 100010 7 int wa[maxn],wv[maxn],wb[maxn],wq[maxn]; 8 int height[maxn],rank[maxn 阅读全文

posted @ 2013-08-25 16:58 GyyZyp 阅读(227) 评论(0) 推荐(0) 编辑

poj2774 Long Long Message 后缀数组求最长公共子串

摘要: 题目链接:http://poj.org/problem?id=2774这是一道很好的后缀数组的入门题目题意:给你两个字符串,然后求这两个的字符串的最长连续的公共子串一般用后缀数组解决的两个字符串的问题都通过将一个字符串加在另一个字符串的后面来解决我们知道对于任意一个子串都是当前字符串的某一个后缀的前缀预处理时,假设当前输入的两个字符串为s,p;我们将p加在s的h后面那么求这两个字符串的最长公共子串,就转化为求某两个后缀的最长公共前缀我们知道任意两个后缀的最长公共前缀一定是height数组中的某一个值(对于sa[i]和sa[j] ,他们的最长公共前缀就是minheight[k](i 2 #inc 阅读全文

posted @ 2013-08-25 14:32 GyyZyp 阅读(513) 评论(0) 推荐(0) 编辑

导航