这真的是披着CF外衣的OI赛制?我怎么觉得这是披着部分分外衣的CF?果然每逢cf赛制必掉rating,还是得%%%cyc橙名爷++rp。。

  A题就是找一找序列里有没有两个连在一起的0或1,并且不能向两端延伸(比如……1001……或110……或者……100),找到了之后就可以把整个序列分成这两个数左边,这两个数和他的右边三部分,然后这两个0或1每个都能与左边右边串在一起构成两个相同的子序列,并且这个子序列在原序列中只会出现这两次,满足题目条件。如果没找到,再看看原来的序列里是不是只有两个0或1,那么这样单独一个0或1也只在序列里出现两次。要是上边两种情况都不满足,那么随便想想知道不可能存在只出现两次的子序列。(cyc写n>10输出Y也过了,,,n很大的时候N的概率确实很小)

#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<cstdio>
using namespace std;
char s[5010];
int main()
{
    int n,i,sum=0;
    scanf("%s",s); n=strlen(s);
    for(i=0;i<n;i++)
        if(s[i]=='0')sum++;
    int flag=0;
    if(sum==2||n-sum==2||(s[0]==s[1]&&s[1]!=s[2]))flag=1;
    for(i=3;i<=n;i++)
        if(s[i-3]!=s[i-2]&&s[i-2]==s[i-1]&&s[i-1]!=s[i])flag=1;
    if(flag)printf("Y");else printf("N");
}
A

相关文章:

  • 2022-02-23
  • 2021-09-12
  • 2021-04-12
  • 2022-12-23
  • 2022-12-23
  • 2021-08-23
  • 2022-12-23
  • 2021-05-27
猜你喜欢
  • 2022-02-16
  • 2021-06-02
  • 2021-12-12
  • 2021-09-02
  • 2021-12-17
  • 2021-12-31
  • 2022-02-25
相关资源
相似解决方案