2015 UESTC Training for Search Algorithm & String - J - 全都是秋实大哥 【KMP】
2015-05-04 09:30
399 查看
给出一个字符串,求每个前缀的最小循环节长度,并输出整个字符串的最小循环节。字符串长度为3*10^6
找循环节这种问题还是要用KMP
对于长度为i的字符串 i%(i-f[i])==0 此时,它的最小循环节长度就是i-f[i],f[i]是字符串的第i位的失配函数(注意是从1开始算)
找循环节这种问题还是要用KMP
对于长度为i的字符串 i%(i-f[i])==0 此时,它的最小循环节长度就是i-f[i],f[i]是字符串的第i位的失配函数(注意是从1开始算)
#include<bits/stdc++.h> #define eps 1e-9 #define FOR(i,j,k) for(int i=j;i<=k;i++) #define MAXN 1005 #define MAXM 40005 #define INF 0x3fffffff #define PB push_back #define MP make_pair #define X first #define Y second #define lc (k<<1) #define rc ((k<<1)1) using namespace std; typedef long long LL; int i,j,k,n,m,x,y,T,ans,big,cas,num,len; bool flag; char s[3000005]; int f[3000005]; void getFail(char *s,int *f) { int m=strlen(s),j; f[0]=0;f[1]=0; for (int i=1;i<m;i++) { j=f[i]; while (j&&s[i]!=s[j]) j=f[j]; f[i+1]=(s[i]==s[j]?j+1:0); } } int main() { scanf("%s",s); getFail(s,f); len=strlen(s); for (i=1;i<=len;i++) { if (i%(i-f[i])==0) { printf("%d ",i-f[i]); }else printf("%d ",i); } printf("\t\n"); printf("%s\n",s+f[len]); return 0; }
相关文章推荐
- UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
- UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
- UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>
- UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>
- UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>
- UESTC_Eight Puzzle 2015 UESTC Training for Search Algorithm & String<Problem F>
- UESTC_Infected Land 2015 UESTC Training for Search Algorithm & String<Problem G>
- UESTC_Ferris Wheel String 2015 UESTC Training for Search Algorithm & String<Problem L>
- UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>
- UESTC_韩爷的梦 2015 UESTC Training for Search Algorithm & String<Problem N>
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>
- 2015 UESTC Training for Search Algorithm & String - M - Palindromic String【Manacher回文串】
- 2016 UESTC Training for Search Algorithm & String E - 吴队长征婚 dfs剪枝、好题
- 2016 UESTC Training for Search Algorithm & String H - 中二少女与字符串 Trie 字典树
- 2016 UESTC Training for Search Algorithm & String I - 谭爷剪花布条 KMP
- 2016 UESTC Training for Search Algorithm & String K - 卿大爷的三个女友 KMP、跳转数组
- 2016 UESTC Training for Search Algorithm & String(A B C E I K)
- 2015 UESTC Training for Search Algorithm and String N 韩爷的梦
- 2016 UESTC Training for Search Algorithm & String A - Xiper的奇妙历险(1) 八皇后问题、dfs