#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
char s[2][N];
int main()
{
int __;
scanf("%d",&__);
while(__--)
{
int n;
scanf("%d",&n);
scanf("%s%s",s[0],s[1]);
bool flag=false;
for(int i=1;i<n;i++)
{
if(s[0][i]=='W' && s[1][i]=='B')
{
if(s[1][i-1]=='W')
{
puts("NO");
flag=1;
break;
}
}
else if(s[0][i]=='B' && s[1][i]=='W')
{
if(s[0][i-1]=='W')
{
puts("NO");
flag=1;
break;
}
}
else if(s[0][i]=='B' && s[1][i]=='B')
{
if(i==n-1) break;
if(s[0][i+1]=='B' && s[1][i+1]=='B')
{
int id=-1;
for(int j=i;j<n;j++)
{
if(s[0][j]=='W' || s[1][j]=='W')
{
id=j;
break;
}
}
if(id==-1) break;
int cnt=id-i;
//cout<<cnt<<" "<<i<<" "<<id<<endl;
if(s[0][i-1]=='B')
{
if(cnt%2==1 && s[1][id]=='W' && s[1][i-1]!='B')
{
puts("NO");
flag=1;
break;
}
else if(cnt%2==0 && s[0][id]=='W' && s[1][i-1]!='B')
{
puts("NO");
flag=1;
break;
}
}
if(s[1][i-1]=='B')
{
if(cnt%2==1 && s[0][id]=='W' && s[0][i-1]!='B')
{
puts("NO");
flag=1;
break;
}
else if(cnt%2==0 && s[1][id]=='W' && s[0][i-1]!='B')
{
puts("NO");
flag=1;
break;
}
}
i=id;
}
else
{
if(s[0][i-1]=='B' && s[0][i+1]=='B')
{
puts("NO");
flag=1;
break;
}
else if(s[1][i-1]=='B' && s[1][i+1]=='B')
{
puts("NO");
flag=1;
break;
}
}
}
}
if(!flag) puts("YES");
}
}
https://www.luogu.com.cn/problem/CF1766C 这是题目,感觉我的代码是对的,怎么造数据都对。
感觉快调疯了,悬赏一关注(如果对我很有帮助会考虑给现金)