• (BC 一周年)hdu 5311 Hidden String


    Hidden String

     
     Accepts: 437
     
     Submissions: 2174
     Time Limit: 2000/1000 MS (Java/Others)
     
     Memory Limit: 262144/262144 K (Java/Others)
    问题描述
    今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为nn的字符串ss. 他想要知道能否找到ss的三个互不相交的子串s[l_1..r_1]s[l1​​..r1​​], s[l_2..r_2]s[l2​​..r2​​], s[l_3..r_3]s[l3​​..r3​​]满足下列条件:
    
      1. 1 le l_1 le r_1 < l_2 le r_2 < l_3 le r_3 le n1l1​​r1​​<l2​​r2​​<l3​​r3​​n
    
      2. s[l_1..r_1]s[l1​​..r1​​], s[l_2..r_2]s[l2​​..r2​​], s[l_3..r_3]s[l3​​..r3​​]依次连接之后得到字符串"anniversary".
    输入描述
    输入有多组数据. 第一行有一个整数TT (1 le T le 100)(1T100), 表示测试数据组数. 然后对于每组数据:
    
    一行包含一个仅含小写字母的字符串ss (1 le |s| le 100)(1s100).
    
    输出描述
    对于每组数据, 如果Soda可以找到这样三个子串, 输出"YES", 否则输出"NO".
    输入样例
    2
    annivddfdersewwefary
    nniversarya
    输出样例
    YES
    NO

    比赛的时候没做出来,sad
    我发现我有一个问题,就是不敢跑暴力
    有不少题其实正解就是暴力
    或者有的题,暴力不是标解,但是绝对可A,可我就不敢写...
    就觉得不会是这样..
    说到底还是不自信吧...

    思路是枚举两个间隔点,将 string tar="anniversary"分成三个不为空的部分
    然后在给的字符串中按顺序查找这三部分
    如果都能找到,直接YES
    如果任何一种间隔的分段都无法YES 就NO...

    妈蛋,if语句后面多写了个分号,调了半个多小时才发现(为啥总是这种傻逼错误....)
    还有一点,因为是多组数据,而对于每组数据,将tar拆分的方法都是一样的,可以先预处理一下存到数组里.
     /*************************************************************************
        > File Name: code/bc/#ann/1002.cpp
        > Author: 111qqz
        > Email: rkz2013@126.com
        > Created Time: 2015年07月25日 星期六 18时54分35秒
     ************************************************************************/
    
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #include<vector>
    #include<stack>
    #define y0 abc111qqz
    #define y1 hust111qqz
    #define yn hez111qqz
    #define j1 cute111qqz
    #define tm crazy111qqz
    #define lr dying111qqz
    using namespace std;
    #define REP(i, n) for (int i=0;i<int(n);++i)
    typedef long long LL;
    typedef unsigned long long ULL;
    const int N=1E2+5;
    int d[N];
    int len;
    int cnt;
    string st,tar,s1[N],s2[N],s3[N];
    bool flag;
    
    void solve (string x,string y,string z)
    {
      //  cout<<x<<"+"<<y<<"+"<<z<<endl;
        int lx = x.length();
        int ly = y.length();
        int lz = z.length();
        int p;
        int k = 0;
        for ( int i = 0 ; i  <= len-11 ; i++ )
        {
        string tmps = st.substr(i,lx);
    
        if (tmps==x)
        {
            p = i;
            k++;
            break;
        }
        }
        if (k==0) return;
    
        for ( int i =  p+lx ;  i <= len - 11 + lx ;i++)
        {
        string tmps = st.substr(i,ly);
    
        if (tmps==y)
        {
            p = i ;
            k++;
            break;
        }
        }
        if (k==1) return ;
        for ( int i = p+ly;  i <=len - 11+lx+ly ; i ++)
        {
        string tmps = st.substr(i,lz);
        if (tmps==z)
        {
            k++;
            break;
        }
        }
        if (k==3)
        {
        flag = true;
        return;
        }
    
    }
    int main()
    {
        int T;
        tar = "anniversary";
        cnt =0;
        for ( int i = 1 ; i <= 9 ; i++ )
        {
        for ( int j = i +1 ; j<= 10 ; j++ )
        {
            cnt++;
            s1[cnt] = tar.substr(0,i);
            s2[cnt] = tar.substr(i,j-i);
            s3[cnt] = tar.substr(j);
            
        }
        }
        cin>>T;
        while (T--)
        {
          flag = false;
          cin>>st;
          len = st.length();
          int k = 0;
          int num = 0;
          
          for ( int i = 1;  i <= cnt  ; i++ )
          {
    
              solve(s1[i],s2[i],s3[i]);
          } 
          if (flag)
            {
            cout<<"YES"<<endl;
            }
          else
            {
            cout<<"NO"<<endl;
            }
    
        }
    
        return 0;
    }

     
  • 相关阅读:
    UVaLive 3695 Distant Galaxy (扫描线)
    UVaLive 3695 City Game (扫描线)
    CodeForces 349B Color the Fence (DP)
    UVaLive 3905 Meteor (扫描线)
    UVaLive 3902 Network (无根树转有根树,贪心)
    NodeJS学习笔记 (16)子进程-child_process(ok)
    字符编码笔记:ASCII,Unicode 和 UTF-8
    NodeJS学习笔记 (15)二进制数据-buffer(ok)
    NodeJS学习笔记 (14)URL查询字符串-querystring(ok)
    NodeJS学习笔记 (13)数据加密-crypto(OK)
  • 原文地址:https://www.cnblogs.com/111qqz/p/4684543.html
Copyright © 2020-2023  润新知