codeforce D. Password
2014-11-04 14:17
141 查看
题目来源:http://codeforces.com/contest/127/problem/D
Description
Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temple. However, its doors were firmly locked and even Obelix had no luck opening them.
A little later they found a string s, carved on a rock below the temple's gates. Asterix supposed that that's the password that opens the temple and read the string aloud. However, nothing happened.
Then Asterix supposed that a password is some substring t of the string s.
Prefix supposed that the substring t is the beginning of the string s; Suffix supposed that the substring t should
be the end of the string s; and Obelix supposed that t should be located somewhere inside the string s,
that is, t is neither its beginning, nor its end.
Asterix chose the substring t so as to please all his companions. Besides, from all acceptable variants Asterix chose the longest one (as Asterix loves long strings). When Asterix read the substring t aloud,
the temple doors opened.
You know the string s. Find the substring t or determine that such substring does not exist and all that's been written above is just
a nice legend.
Input
You are given the string s whose length can vary from 1 to 106 (inclusive),
consisting of small Latin letters.
Output
Print the string t. If a suitable t string does not exist, then print "Just a legend" without
the quotes.
Sample Input
Input
Output
Input
Output
Description
Asterix, Obelix and their temporary buddies Suffix and Prefix has finally found the Harmony temple. However, its doors were firmly locked and even Obelix had no luck opening them.
A little later they found a string s, carved on a rock below the temple's gates. Asterix supposed that that's the password that opens the temple and read the string aloud. However, nothing happened.
Then Asterix supposed that a password is some substring t of the string s.
Prefix supposed that the substring t is the beginning of the string s; Suffix supposed that the substring t should
be the end of the string s; and Obelix supposed that t should be located somewhere inside the string s,
that is, t is neither its beginning, nor its end.
Asterix chose the substring t so as to please all his companions. Besides, from all acceptable variants Asterix chose the longest one (as Asterix loves long strings). When Asterix read the substring t aloud,
the temple doors opened.
You know the string s. Find the substring t or determine that such substring does not exist and all that's been written above is just
a nice legend.
Input
You are given the string s whose length can vary from 1 to 106 (inclusive),
consisting of small Latin letters.
Output
Print the string t. If a suitable t string does not exist, then print "Just a legend" without
the quotes.
Sample Input
Input
fixprefixsuffix
Output
fix
Input
abcdabc
Output
Just a legend
</pre><span style="font-family: 'Microsoft YaHei', 微软雅黑, Arial, 'Lucida Grande', Tahoma, sans-serif;font-size:12px; line-height: 24px;">就是求最大前缀 后缀 并且要求在中间出现过</span></p><p><span style="font-family:Microsoft YaHei, 微软雅黑, Arial, Lucida Grande, Tahoma, sans-serif;font-size:12px;"><span style="line-height: 24px;"><span style="font-family: 'Microsoft YaHei', 微软雅黑, Arial, 'Lucida Grande', Tahoma, sans-serif;font-size:12px; line-height: 24px;"></span></span></span></p><p><span style="font-family:Microsoft YaHei, 微软雅黑, Arial, Lucida Grande, Tahoma, sans-serif;font-size:12px;"><span style="line-height: 24px;">解释在代码中:</span></span></p><p><span style="font-family:Microsoft YaHei, 微软雅黑, Arial, Lucida Grande, Tahoma, sans-serif;font-size:12px;"><span style="line-height: 24px;"></span></span></p><p><span style="font-family:Microsoft YaHei, 微软雅黑, Arial, Lucida Grande, Tahoma, sans-serif;font-size:12px;"><span style="line-height: 24px;"></span></span><pre name="code" class="cpp">#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 1000100 int next ,len,vis ; char a ; void getfail(char *a) { int i,j; next[0]=-1; i=0; j=-1; while(i<len) { if(j==-1||a[i]==a[j]) { i++; j++; next[i]=j; } else j=next[j]; } } int main() { int i,j; while(~scanf("%s",a)) { len=strlen(a); getfail(a); for(i=0;i<=next[len];i++) vis[i]=0; //标记出现过的前缀 for(i=1;i<len;i++) vis[next[i]]=1; i=next[len]; int flag=0; while(i) //这一步应该是重点,为什么跳到next[i]? //因为next[i],记录的是最大前缀,当这个前缀没有在中间出现过 //,而你只能在当前最大前缀中找次最长后缀等于前缀所以长度就是缩短为next[i]了 { if(vis[i]) { flag=1; a[i]='\0'; break; } i=next[i]; } if(!flag) printf("Just a legend\n"); else printf("%s\n",a); } return 0; }
相关文章推荐
- codeforce D. Password
- CODEFORCE 126B Password
- codeforce 67C - Sequence of Balls(dp)
- CodeForce 439C Devu and Partitioning of the Array(模拟)
- codeforce Maximum of Maximums of Minimums(区间划分 求区间最小值最大值问题)
- Codeforce 721C(DAG上dp)
- CodeForce334A
- codeforce 347c
- CodeForce 724D. Dense Subsequence bY Assassin
- Codeforce - 204B - Little Elephant and Cards
- Codeforce - 366B - Dima and To-do List
- CodeForce Round 446 Pride
- codeforce-B. Sort the Array
- codeforce 731C Socks(并查集+贪心)
- codeforce 895B XK Segments (结论)
- codeforce 439D 二分或者三分
- codeforce B. Preparing Olympiad (DFS+回溯)/(暴力状压)
- codeforce834A
- codeforce Looksery Cup 2015 H Degenerate Matrix
- codeforce 382 div2 E —— 树状dp