zoukankan      html  css  js  c++  java
  • Codeforces Round #306 (Div. 2) 550A Two Substrings

    链接:http://codeforces.com/contest/550/problem/A

    这是我第一次玩cf这种比赛,前面做了几场练习,觉得div2的前面几个还是比较水的。

    所以看到这道题我果断觉得是拼手速的题啊,结果瞬间就一发WA,连pretest都没通过,

    然后开始想,发现没那么简单的样子,很多坑的样子,当我写了2个循环把AB BA 都扫一遍时,

    认为考虑周全后,觉得能过了,就交,过了pretest,当时看room里面 大多数还没过A呢,觉得很高兴。

    然后学长说这题能叉很多人,我不懂什么是叉,后来才知道原来这就是所谓的hack。学长给我数据叫我去hack

    别人,说这数据绝对能hack很多人,还截图给我 他们room好多都被他hack了。我点开许多人的代码,各种语言都有的,

    看来看去感觉都能过啊,就没去hack了,因为才做了一题,还要做下面的题目。结果当我过了第二题时,突然弹出我被hack的消息。。。

    我还想去resubmmit呢,不懂规则也是悲剧啊。把C题不考虑的写了写,交过了pretest,觉得圆满了,谁知道原来这只是部分数据了。

    打完第一次cf,懂了很多规则,的确很刺激,好玩,下面就讲A题了。

    我搞来搞去,觉得分情况是最保险的了,因为情况数比较少。

    扫一遍 得到AB  和 BA的个数a,b

    1:如果a,b有一个为0 那么NO

    2:如果a ,b都为1 ,那么在原串中找是否存在子串ABA 或者BAB 存在 NO,否则 YES

    3:如果a,b中有一个为1,另一个为2,找是否存在子串ABAB,或者BABA 存在NO 否则YES

    4如果 a,b >=2 那么不会存在覆盖的问题,YES

    代码如下

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<stack>
     5 #include<queue>
     6 #include<ctype.h>
     7 #include<math.h>
     8 #include<algorithm>
     9 #include<string.h>
    10 #include<set>
    11 using namespace std;
    12 const int maxn = 1e5+5;
    13 char s[maxn];
    14 int main()
    15 {   int a = 0,b = 0;
    16     cin>>s;
    17     int len = strlen(s);
    18     for(int i = 0;i<len;i++)
    19     {
    20         if(s[i]=='A'&&s[i+1]=='B') a++;
    21         if(s[i]=='B'&&s[i+1]=='A') b++;
    22     }
    23     if(!a||!b) puts("NO");
    24     else
    25     {
    26         if(a==1&&b==1)
    27         {
    28             if(strstr(s,"ABA")||strstr(s,"BAB")) puts("NO");
    29             else  puts("YES");
    30         }
    31         else if(a==2&&b==1&&strstr(s,"ABAB")) puts("NO");
    32         else if(b==2&&a==1&&strstr(s,"BABA")) puts("NO");
    33         else puts("YES");
    34     }
    35 
    36     return 0;
    37 }
  • 相关阅读:
    Java for LeetCode 229 Majority Element II
    Java for LeetCode 228 Summary Ranges
    Java for LeetCode 227 Basic Calculator II
    Java for LintCode 颜色分类
    Java for LintCode 链表插入排序
    Java for LintCode 颠倒整数
    Java for LintCode 验证二叉查找树
    Java for LeetCode 226 Invert Binary Tree
    Java for LeetCode 225 Implement Stack using Queues
    Java for LeetCode 224 Basic Calculator
  • 原文地址:https://www.cnblogs.com/jiachinzhao/p/4576014.html
Copyright © 2011-2022 走看看