关于刚才的T2:心态崩了
  • 板块灌水区
  • 楼主Terraria
  • 当前回复19
  • 已保存回复19
  • 发布时间2021/2/9 18:03
  • 上次更新2023/11/5 03:29:23
查看原帖
关于刚才的T2:心态崩了
289275
Terraria楼主2021/2/9 18:03

看到犇犇里各位大佬人均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;
	}
}
2021/2/9 18:03
加载中...