题解(老师的)
2025-08-01 20:25:16
发布于:浙江
4阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N=200010;
const int mod =1e9+7;
int dp[2][N];
string s[2];
int t,m;
void solve(){
cin>>m;
cin>>s[0]>>s[1];
int cnt=count(s[0].begin(),s[0].end(),'B')+count(s[1].begin(),s[1].end(),'B');
for (int i = 0; i < m; i++){
if (s[0][i] == 'B'){
dp[0][i] = 1;
}else{
dp[0][i] = 0;
}
if (s[1][i] == 'B'){
dp[1][i] = 1;
}else{
dp[1][i] = 0;
}
}
for (int i = 0; i < m; i++){
if (s[0][i] == 'B' && i >= 1){
dp[0][i] += dp[0][i - 1];
}
if (s[1][i] == 'B' && i >= 1){
dp[1][i] += dp[1][i - 1];
}
if (s[0][i] == 'B' && s[1][i] == 'B'){
int tmp = dp[0][i];
dp[0][i] = max(dp[0][i], dp[1][i] + 1);
dp[1][i] = max(dp[1][i], tmp + 1);
}
}
if (dp[0][m - 1] == cnt || dp[1][m - 1] == cnt){
cout << "YES"<<endl;
}else{
cout << "NO"<<endl;
}
}
int main(){
cin >> t;
while(t--){
solve();
}
return 0;
}
这里空空如也
有帮助,赞一个