码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5311 Hidden String (暴力)

时间:2015-07-26 00:22:10      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

题意:今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为n的字符串s. 他想要知道能否找到s的三个互不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]满足下列条件:

  1. 1l1r1<l2r2<l3r3n

  2. s[l1..r1], s[l2..r2], s[l3..r3]依次连接之后得到字符串"anniversary".






思路:其实就是要在一个串中找可能存在的3个连续子串来构成这个
"anniversary",穷举第一个串的大小,再穷举第2个串的大小,剩下的由第3个串来搞定。



技术分享
 1 //#include <bits/stdc++.h>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <map>
 9 #include <set>
10 #include <stack>
11 #include <queue>
12 #define LL long long
13 #define pii pair<int,int>
14 #define INF 0x7f7f7f7f
15 using namespace std;
16 const int N=200;
17 
18 
19 string str;
20 string tmp="anniversary";
21 
22 
23 
24 int cal(int len)
25 {
26     if(len<tmp.size())  return false;//不可能
27     if(str.find( tmp )!= string::npos) return true;
28     if(len==tmp.size()) //相同串
29     {
30         if(str.find( tmp )!= string::npos) return true;
31         else    return false;
32     }
33 
34 
35     for(int i=0; i<11; i++)
36     {
37         unsigned int s1=str.find(tmp.substr(0, i));
38         if( s1+tmp.size()>=len || s1==string::npos )  continue;
39 
40         for(int j=1; j+i<11; j++)
41         {
42             unsigned int s2=str.find( tmp.substr(i, j), s1+i  );
43             if( s2==string::npos )  continue;
44             int k=11-j-i;
45             if( str.find( tmp.substr(i+j, k), s2+j )!=string::npos)
46             {
47                 //cout<<s1<<" "<<s2<<" "<<s3<<" "<<tmp.substr( 0,i )<<tmp.substr(i,j)<<tmp.substr(i+j, k)<<endl;
48                 return true;
49             }
50 
51         }
52     }
53     return false;
54 }
55 
56 
57 
58 int main()
59 {
60     //freopen("input.txt", "r", stdin);
61     int n, m, t, p, q;
62 
63     cin>>t;
64     while(t--)
65     {
66         cin>>str;
67         bool tmp=cal(str.size());
68         if(tmp)     puts("YES");
69         else        puts("NO");
70     }
71 
72     return 0;
73 }
WA????

 

 

HDU 5311 Hidden String (暴力)

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4676861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!