HDU 5311 Sequence
2017-06-24 11:04 tlnshuju 阅读(130) 评论(0) 编辑 收藏 举报Hidden String
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 803 Accepted Submission(s): 302
Problem Description
Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string s of
length n .
He wants to find three nonoverlapping substrings s[l1..r1] , s[l2..r2] , s[l3..r3] that:
1.1≤l1≤r1<l2≤r2<l3≤r3≤n
2. The concatenation ofs[l1..r1] , s[l2..r2] , s[l3..r3] is
"anniversary".
1.
2. The concatenation of
Input
There are multiple test cases. The first line of input contains an integer T (1≤T≤100) ,
indicating the number of test cases. For each test case:
There's a line containing a strings (1≤|s|≤100) consisting
of lowercase English letters.
There's a line containing a string
Output
For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
Sample Input
2 annivddfdersewwefary nniversarya
Sample Output
YES NO
Source
Recommend
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> using namespace std; char str[10001]; struct node { int x; char s; } q[10010]; int main() { int T; char a[] = "anniversary"; scanf("%d",&T); while(T--) { int flag = 0; scanf("%s",str); int l = strlen(str); int ll = strlen(a); int num = 0; for(int j=0; j<l; j++) { for(int i=1; i<=ll; i++) { if(strncmp(str+j,a+num,i) == 0) { int num1 = num + i; for(int jj=j+i; jj<l; jj++) { for(int ii=1; ii<=ll-i; ii++) { if(strncmp(str+jj,a+num1,ii) == 0) { int num2 = num1 + ii; for(int jjj=jj+ii; jjj<l; jjj++) { if(strncmp(str+jjj,a+num2,ll-num2) == 0) { printf("YES\n"); flag = 1; break; } } } if(flag == 1) { break; } } if(flag == 1) { break; } } if(flag == 1) { break; } } if(flag == 1) { break; } } if(flag == 1) { break; } } if(flag == 0) { printf("NO\n"); } } return 0; }