2013 - ECJTU 暑期训练赛第八场-problem-B
2013-08-13 17:58
399 查看
Surprising Strings
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 16 Accepted Submission(s) : 9
[align=left]Problem Description[/align]
The D-pairs of a string of letters are the ordered pairs of letters that are distance D from each other. A string is
D-unique if all of its D-pairs are different. A string is surprising if it is D-unique for every possible distance D.
Consider the string ZGBG. Its 0-pairs are ZG, GB, and BG. Since these three pairs are all different, ZGBG is 0-unique. Similarly, the 1-pairs of ZGBG are ZB and GG, and since these two pairs are different,
ZGBG is 1-unique. Finally, the only 2-pair of ZGBG is ZG, so ZGBG is 2-unique. Thus ZGBG is surprising. (Note that the fact that ZG is both a 0-pair and a 2-pair of ZGBG is irrelevant, because 0 and 2 are different distances.)
Acknowledgement: This problem is inspired by the "Puzzling Adventures" column in the December 2003 issue of
Scientific American.
[align=left]Input[/align]
The input consists of one or more nonempty strings of at most 79 uppercase letters, each string on a line by itself, followed by a line containing only an asterisk that signals the end of the input.
[align=left]Output[/align]
For each string of letters, output whether or not it is surprising using the exact output format shown below.
[align=left]Sample Input[/align]
ZGBG
X
EE
AAB
AABA
AABB
BCBABCC
*
[align=left]Sample Output[/align]
ZGBG is surprising.
X is surprising.
EE is surprising.
AAB is surprising.
AABA is surprising.
AABB is NOT surprising.
BCBABCC is NOT surprising.map容器+暴力直接过AC代码:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<stack> #include<map> #include<set> #include<algorithm> #include<iomanip> #include<string> #include<cstring> using namespace std; int main() { string str; int i,j,p,n; while(cin>>str) { if(str=="*") break; p=0; n=str.size(); for(i=1;i<n;i++) { map<string,int>m; for(j=0;j<n;j++) { string s; s+=str[j]; if(i+j<n) { s+=str[j+i]; if(m[s]) { cout <<str<<" is NOT surprising." <<endl; { p=1; break; } } m[s]++; } } if(p) break; } if(p) continue; else cout <<str<<" is surprising." <<endl; } return 0; }
相关文章推荐
- 2013 - ECJTU 暑期训练赛第八场-problem-A
- 2013 - ECJTU 暑期训练赛第八场-problem-C
- 2013 - ECJTU 暑期训练赛第八场-problem-D
- 2013 - ECJTU 暑期训练赛第八场-problem-E
- 2013 - ECJTU 暑期训练赛第五场-problem-F
- 2013 - ECJTU 暑期12级训练赛第一场-Problem-A
- 2013 - ECJTU 暑期12级训练赛第一场-problem-B
- 2013 - ECJTU 暑期训练赛第七场-problem-H
- 2013 - ECJTU 暑期12级训练赛第一场-problem-C
- 2013 - ECJTU 暑期训练赛第三场-problem-F
- 2013 - ECJTU 暑期训练赛第六场-problem-F
- 2013 - ECJTU 暑期12级训练赛第一场-problem-E
- 2013 - ECJTU 暑期训练赛第二场-problem-A
- 2013 - ECJTU 暑期训练赛第四场-problem-A
- 2013 - ECJTU 暑期训练赛第六场-problem-G
- 2013 - ECJTU 暑期训练赛第二场-problem-E
- 2013 - ECJTU 暑期训练赛第七场-problem-G
- 2013 - ECJTU 暑期训练赛第二场-problem-G
- 2013 - ECJTU 暑期训练赛第三场-problem-J
- 2013 - ECJTU 暑期训练赛第二场-problem-H