Seek the Name, seek the Fame
Time Limit: 2000MS |
|
Memory Limit: 65536K |
Total Submissions: 13840 |
|
Accepted: 6887 |
Description
The little cat is so famous, which many couples tramp over Hill and Dale to Byteland, and asked the little cat to give name s to their newly-born babies. They seek the name, and at the same time seek the fame. In order-to-escape from such boring job, the innovative little cat works out a easy but fantastic algorithm:
Step1. Connect The father ' s name and the mother ' s name, to a new string s.
Step2. Find a proper Prefix-suffix string of s (which is isn't only the prefix, but also the suffix of s).
Example:father= ' ala ', mother= ' La ', we have S = ' ala ' + ' la ' = ' alala '. Potential prefix-suffix strings of S is {' A ', ' ala ', ' Alala '}. Given the string S, could the little cat to write a program to calculate the length of possible prefix-suffix str Ings of S? (He might thank you by giving your baby a name:)
Input
The input contains a number of test cases. Each test case occupies a, contains the string S described above.
Restrictions:only lowercase letters may appear in the input. 1 <= Length of S <= 400000.
Output
For each test case, output a single line with an integer numbers in increasing order, denoting the possible length of the new Baby ' s name.
Sample Input
Ababcababababcababaaaaa
Sample Output
2 4 9 181 2 3) 4 5
#include <iostream> #include <sstream> #include <algorithm> #include <cstdio> #include < string.h> #include <cctype> #include <string> #include <cmath> #include <vector> #include <stack> #include <queue> #include <map> #include <set>using namespace Std;char cnt[400004];int Next[400004];void Get_next (char *s,int len) {next [0]=-1; int j=-1,i=0; while (I<len) {if (j==-1| | S[i]==s[j]) {i++; j + +; Next[i]=j; } else j=next[j]; }}int Main () {while (scanf ("%s", CNT)!=eof) {stack<int>sk; int K=strlen (CNT); memset (Next,0,sizeof (next)); Get_next (Cnt,strlen (CNT)); int t; while (k>0) {Sk.push (k); T=NEXT[K]; k=t; } while (!sk.empty ()) {cout<<sk.top () << ""; Sk.pop (); } cout<<endl; } return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
POJ 2752 seek the Name, seek the Fame (KMP pure template)