CF1863A Channel
思路
最开始没看懂题意,还想了会儿。
容易发现,如果某个时刻存在总人数是满的,那么一定所有人都看到了,输出 YES
。
否则的话,如果不算减少的人数,总人数超过了 \(n\),即认为每次新增的人都是之前没看过的人(虽然最终可能会超过 \(n\),不符合情况),这样的话可能所有人都看到了,则输出 MAYBE
。
除了这两种情况外,就是 NO
。
AC code
#include <bits/stdc++.h>
using namespace std;
int T,n,m,q,maxn,num,flag;
char ch[105];
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%s",&n,&m,&q,ch),maxn=m,num=m,flag=0;
for(int i=0;i<q;++i)
{
if(num==n) flag=1;
if(ch[i]=='+') ++num,++maxn;
else --num;
}
if(flag||num==n) printf("YES\n");
else if(maxn>=n) printf("MAYBE\n");
else printf("NO\n");
}
return 0;
}