字符串
liuzhan214
业精于勤!
展开
-
kmp练习poj1961
题意 求出所有前缀串的最小循环节长度#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000005;char p[maxn];int f[maxn];int main(){ int n,cas = 1;原创 2016-09-28 16:28:41 · 232 阅读 · 0 评论 -
kmp练习poj2406
题意 求最小循环节,注意输入末尾有个句点,代码实际可以简单很多,后续的判断是无意义的#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000050;char p[maxn],str原创 2016-09-28 16:26:12 · 196 阅读 · 0 评论 -
kmp练习poj2752
题意 求字符串所有循环节的长度#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 400050;char p[maxn];int fail[maxn];vector<int> an原创 2016-09-28 16:22:26 · 207 阅读 · 0 评论 -
kmp练习poj3461
题意 求模式串在文本串中出现的次数#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000050;const int maxm = 10050;char s[maxn],p[maxm];int fail[maxm原创 2016-09-28 16:20:02 · 214 阅读 · 0 评论 -
AC自动机实现
程序功能 求文本串中出现了多少模式串[链接](http://acm.hdu.edu.cn/showproblem.php?pid=2222)#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxk原创 2016-09-28 16:32:50 · 291 阅读 · 0 评论 -
ac自动机静态比动态快
ac自动机提高效率的一个办法是实现后缀链接,即增加一个指针指向下一个单词节点,而不是盲目的沿着失败指针查询。 however,lightoj1427迷之超时,难道动态建树比静态建树快很多吗?再写个静态的试试吧……题意:求解各个模式串在文本串中出现的次数#include <map>#include <queue>#include <cstdio>#include <cstring>#incl原创 2016-10-02 16:34:17 · 686 阅读 · 0 评论 -
malacher算法lightoj1258
malacher算法用来求解回文串问题,和kmp算法的思想有相似的部分,利用已经匹配过的字符的信息,而不是盲目匹配,这篇博客总结的很好 大神算法讲解戳这里题意:给定一个字符串,求解至少需要在字符串右端添加多少个字符串使之成为回文串 题解:用malacher算法构造并求出所有的最长回文子串,在这些子串中挑选出能延伸到串尾的最长子串,比如acababa,ababa是可以延伸到串尾的最长字符串,可以明原创 2016-10-04 15:18:30 · 558 阅读 · 0 评论 -
后缀数组代码理解加注释
一段三四十行的代码却看了一个下午,仿佛又回到了刚学C语言的时候,终于看懂了,写下注释,晚上写题。 后缀数组是用来在线处理模式串匹配问题的算法,比如有一个文本串aabaaaab,我们求出一个sa数组,sa[i] = x表示第该文本串中第i小的后缀串的头字母是x,sa[0] = 3(aaaab),sa[1] = 4(aaab),sa[2] = 5(aab),sa[7]=2(baaaab),暴力处理后缀原创 2016-10-05 17:37:31 · 895 阅读 · 0 评论