AT2080题解
题面
本题只是一个模拟题而已,从前往后遍历整个选手数组,按题目要求判断就行了。
我们设
那么,对于每一个选手:
-
如果是
a 类,只要满足a+b<A+B ,就将a 加 1,在输出Yes,否则输出No。 -
如果是
b 类,只要满足a+b<A+B 且b<B (排名在b 类B 位以内),就将b 加 1,在输出Yes,否则输出No。 -
如果是
c 类,直接输出No。
代码
#include<bits/stdc++.h>
using namespace std;
int n,a,b,A,B;
char c[100005];//选手数组
int main(){
scanf("%d%d%d",&n,&A,&B);//读入
scanf("%s",c+1);
for(int i=1;i<=n;i++){
if(c[i]=='a'){//按要求判断
if(a+b<A+B)printf("Yes\n"),a++;
else printf("No\n");
}
else if(c[i]=='b'){
if(a+b<A+B&&b<B)printf("Yes\n"),b++;
else printf("No\n");
}
else printf("No\n");
}
return 0;
}