Codeforces Round #754 (Div. 2) C
Posted yeah17981
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #754 (Div. 2) C相关的知识,希望对你有一定的参考价值。
某个b这场的c题死都找不到bug,不然就绿了呜呜呜,对我到现在都没绿我可菜了
结果发现是中间变量忘了清零了草
给一串只有abc的字符串,求最短子串满足其中的a的数量大于b的数量
首先子串开头结尾都为a,中间bc、cb、c、b、bbacc、ccabb、空
结束
#include <bits/stdc++.h>
using namespace std;
char s[1000006];
int a1[1000006];
int b1[1000006];
int c1[1000006];
int main()
int n,a,b,c;
cin>>n;
int l=1,r=a;
int ans=0;
while(n--)
cin>>a;
cin>>s+1;
l=0;
b=0;c=0;
int flag=0;
int minn=3,maxx=3;
for(int i=1;i<=a;i++)
if(s[i]=='a')
if(l!=0)
a1[i]=i-l;
b1[i]=b;
c1[i]=c;
b=0;
c=0;
l=i;
if(a1[i]==1)
flag=1;
break;
if(s[i]=='b')
b++;
if(s[i]=='c')
c++;
int k=-1;
b=-1;
c=-1;
ans=-1;
for(int i=1;i<=a;i++)
if(a1[i]!=0)
if(a1[i]<=3)
if(k==3&&a1[i]==3&&b+b1[i]==2&&c+c1[i]==2)
if(ans==-1)
ans=7;
k=a1[i];
b=b1[i];
c=c1[i];
if(b<=1&&c<=1)
if(ans==-1) ans=b+c+2;
ans=min(ans,b+c+2);
else
k=0;
b=0;
c=0;
a1[i]=0;
b1[i]=0;
c1[i]=0;
if(flag==1)
cout<<2<<"\\n";
continue;
cout<<ans<<"\\n";
// 10000000
//9
//aabbabaca
//7
//abbabba
以上是关于Codeforces Round #754 (Div. 2) C的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #754 (Div. 2) C
Codeforces Round #436 E. Fire(背包dp+输出路径)
[ACM]Codeforces Round #534 (Div. 2)