题目大意
给定两个初始均只含一个 a a a的字符串 s , t s,t s,t,给定 q q q次操作,有两种操作
- 1 k x,表示在 s s s串后面加 k k k次 x x x
- 2 k x,表示在
t
t
t串后面加
k
k
k次
x
x
x
对于每次操作完成后,输出是否可能将 s , t s,t s,t按任意指定顺序重排后, s s s串严格小于 t t t串
思路
注意到我们可以按任意顺序重排
则
t
t
t只要不是纯
a
a
a为必胜态(因为永远可以把一个非
a
a
a放到
t
t
t第一位而把
a
a
a放到
s
s
s第一位)
若
t
,
s
t,s
t,s均为纯
a
a
a,比较长度
若
t
t
t为纯
a
a
a,
s
s
s不为,则必败态
ACcode
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int q;cin>>q;
int len1=1,len2=1;
bool f1=1,f2=1;//t是否为纯a
while(q--){
int d,k;cin>>d>>k;
string str;cin>>str;
bool flag=0;
for(auto x:str)if(x!='a'){flag=1;break;}
if(d==1){
len1+=str.size()*k;
if(flag)f1=0;
}
if(d==2){
len2+=str.size()*k;
if(flag)f2=0;
}
if(!f2)cout<<"YES"<<'\n';
else if(f2&&!f1)cout<<"NO"<<'\n';
else{
if(len2>len1)cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
}
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
solve();
}
return 0;
}