LA 3026 - Period KMP】的更多相关文章

看题传送门:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1027 给定一个长度为n的循环节,求它的每个前缀的最短循环节.换句话说,对于每个i (2<=i<=n),求一个最大的整数K>1(如果k处在),使得s的前i个字符组成的前缀是某个字符串重复K次得到.输出所有存在K的i对应的K. 比如aabaabaab…
题目传送门 题意:(训练指南P213) 求每个前缀的最短循环节 分析:利用失配函数的性质,如果i % (i - fail[i]) == 0,那么正好错位移动一个循环节长度. #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; char str[N]; int fail[N]; int len; void get_fail(char *P) { int i = 0, j = -1; fail[i] = j; w…
这只是蓝书上的一道KMP水题...然后对于最长前缀的循环证明我就不说了... #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<algorithm> #define ll long long #define maxn 1000005 using namespace std; int f[maxn],n; char s[maxn]; in…
input n 2<=n<=1000000 长度为n的字符串,只含小写字母 output Test case #cas 长度为i时的最小循环串 循环次数(>1) 若没有则不输出 做法:若next数组是连续的整数且next[i]+1是错位部分长度的倍数,则必有循环出现,且循环次数为(i+1)/错位部分长度 #include <cstdio> #include <queue> #include <cstring> #include <iostream…
参考:http://www.cnblogs.com/jackge/archive/2013/01/05/2846006.html 总结一下,如果对于next数组中的 i, 符合 i % ( i - next[i] ) == 0 && next[i] != 0 , 则说明字符串循环,而且 循环节长度为:   i - next[i] 循环次数为:       i / ( i - next[i] ) #include <iostream> #include <cstdio>…
UVAlive 3026 Period 题目: Period   Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive…
题意:给定一个长度为n字符串s,求它每个前缀的最短循环节.也就是对于每个i(2<=i<=n),求一个最大整数k>1(如果存在),使得s的前i个字符组成的前缀是某个字符串重复得k次得到的.输出所有的的k和i. 析:首先这是一个KMP的一个题(据大神们说这是一个水题...),首先要对KMP有了解,如果没有了解的先看一下,提供一个地址学习KMP算法, http://www.cnblogs.com/dwtfukgv/articles/5532277.html 对KMP有所了解后,其实这就是一个对…
kmp的代码很短,但是不太容易理解,还是先说明一下这个算法过程吧. 朴素的字符串匹配大家都懂,但是效率不高,原因在哪里? 匹配过程没有充分利用已经匹配好的模版的信息,比如说, i是文本串当前字符的下标,j是要匹配的模版串当前正在匹配的字符的下标.(下标都从零开始,j同时可以表示已经匹配的字符长度) 当匹配到i = 4, j = 4的时候失配了,朴素的匹配做法是往右边移一位然后从j开始扫,这样做效率很低. 不难发现前面已经匹配好的串ab是最长公共前缀后缀.把串移动到后缀的第一个位置正好是 朴素的匹…
Period 题意:一个长为N (2 <= N <= 1 000 000) 的字符串,问前缀串长度为k(k > 1)是否是一个周期串,即k = A...A;若是则按k从小到大的顺序输出k即周期数: Sample Input 3 aaa 12 aabaabaabaab 0   Sample Output Test case #1 2 2 3 3   Test case #2 2   2 6   2 9   3 12  4  题目其实是来自于LA的..挺好的一道题,用的是原版的kmp.. 写…
Period Time Limit: 3000MSMemory Limit: 30000K Total Submissions: 12089Accepted: 5656 Description For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefi…