本地运行正确,AT 上 WA
查看原帖
本地运行正确,AT 上 WA
680197
Mini_PEKKA楼主2023/11/4 11:27
#include<bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define pre(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
typedef pair<int,int> pii;
const int N=2e5+5;
char a[N],b[N];
int n,cnta[2],cntb[2];
bool check(){
	int l=1;
	a[n+1]=b[n+1]='C';
	rep(i,1,n+1){
		if(b[i]=='C'){
			if(a[i]!='C'
				||cnta[0]>cntb[0]
				||cnta[1]>cntb[1]) return 0;
			int x=cntb[0]-cnta[0],y=cntb[1]-cnta[1];
			rep(j,l,i){
				if(a[j]=='C'){
					if(x) x--,a[j]='A';
					else if(y) y--,a[j]='B';
				}
			}
			int ra=0,rb=0;
			rep(j,l,i){
				if(b[j]=='B') rb=j;
				if(a[j]=='B') ra=j;
			}
			if(rb>ra) return 0;
			rep(i,0,1) cnta[i]=cntb[i]=0;
			l=i+1;
		}
		if(a[i]!='C') cnta[a[i]-'A']++;
		cntb[b[i]-'A']++;
	}
	return 1;
}
signed main(){
	int t;
	cin>>t;
	while(t--){
		memset(a,0,sizeof a);
		memset(b,0,sizeof b);
		rep(i,0,1) cnta[i]=cntb[i]=0;
		cin>>n;
		rep(i,1,n) cin>>a[i];
		rep(i,1,n) cin>>b[i];
		cout<<(check()?"Yes":"No")<<'\n';
	}
	return 0;
}

为什么?

2023/11/4 11:27
加载中...