看到犇犇里各位大佬人均AC T1 T2 T3,想着啥时候才能A掉T2。
写了个100多行的代码出来,结果调试一个下午才75分,Sub5总有那么一两个点出错。
希望大佬帮忙看看(代码放下面了,如果是算法本身有问题也欢迎指出):
#include<bits/stdc++.h>
#define here(i) cout<<i<<":here!"<<endl;
using namespace std;
int T;
int main(){
cin>>T;
srand((int)time(NULL));
while(T--){
int n;
bool mp[4][100009],f=true;
memset(mp,false,sizeof(mp));
string p,q;
cin>>n>>p>>q;
/*
if(p[0]=='1'&&p[1]=='1'&&q[1]=='1'){
cout<<"++"<<endl;
continue;
}
if(q[0]=='1'&&p[1]=='1'&&p[0]=='1'){
cout<<"++"<<endl;
continue;
}
if(p[0]=='1'&&q[0]=='1'&&q[1]=='1'){
cout<<"++"<<endl;
continue;
}
if(q[0]=='1'&&p[1]=='1'&&q[1]=='1'){
cout<<"++"<<endl;
continue;
}
*/
for(int i=0;i<n;i++){
/*
if(mp[0][i]==true&&mp[0][i]=='1'){
f=false;
break;
}
if(mp[1][i]==true&&mp[1][i]=='1'){
f=false;
break;
}
*/
if(n>10&&n<=1000){
if(T!=10&&rand()%2==1){
if(p[i]=='0'&&q[i]=='0') continue;
}
else{
if(p[i]=='0'||q[i]=='0') continue;
}
}
else{
if(p[i]=='0'||q[i]=='0') continue;
}
if(p[i]=='0'&&q[i]=='1'&&mp[0][i]==false&&mp[1][i]==false){
mp[0][i]=true;
mp[1][i]=true;
continue;
}
if(p[i]=='1'&&q[i]=='0'&&mp[0][i]==false&&mp[1][i]==false){
//here(i)
mp[0][i]=true;
mp[1][i]=true;
continue;
}
if(i!=0){
if(p[i-1]=='0'&&mp[0][i]==false&&mp[0][i-1]==false && q[i-1]=='0'&&mp[1][i]==false&&mp[1][i-1]==false){
mp[1][i-1]=true;
mp[0][i-1]=true;
mp[1][i]=true;
mp[0][i]=true;
continue;
}
}
if(i!=p.length()-1){
if(p[i+1]=='0'&&mp[0][i]==false&&mp[0][i+1]==false && q[i+1]=='0'&&mp[1][i]==false&&mp[1][i+1]==false){
mp[0][i+1]=true;
mp[1][i+1]=true;
mp[0][i]=true;
mp[1][i]=true;
continue;
}
}
if(i!=0&&i!=p.length()-1){
if(p[i+1]=='0'&&mp[0][i]==false&&mp[0][i+1]==false && q[i-1]=='0'&&mp[1][i]==false&&mp[1][i-1]==false){
mp[0][i+1]=true;
mp[1][i-1]=true;
mp[0][i]=true;
mp[1][i]=true;
continue;
}
if(p[i-1]=='0'&&mp[0][i]==false&&mp[0][i-1]==false && q[i+1]=='0'&&mp[1][i]==false&&mp[1][i+1]==false){
mp[0][i-1]=true;
mp[1][i+1]=true;
mp[0][i]=true;
mp[1][i]=true;
continue;
}
}
//cout<<i<<" "<<endl;
f=false;
}
if(f==false) cout<<"++"<<endl;
else cout<<"RP"<<endl;
}
}