65求调,WA in #16 #25
查看原帖
65求调,WA in #16 #25
918478
All_Wrong_Answer楼主2025/1/6 20:57

rt

以下代码过不了 #16 和 #25:

#include <bits/stdc++.h>
using namespace std;
string m[50005],n[50005];
string ls[4][50005];
map<string,long>s;
long x;
long tv=0;
long js1(long q){
	long u=m[q].size();
	long fh=0;
	for(long i=0;i<u;i++){
		fh=(fh*10)+(m[q][i]-'0');
	}
	return fh;
}
long js2(long q){
	long u=n[q].size();
	long fh=0;
	for(long i=0;i<u;i++){
		fh=(fh*10)+(n[q][i]-'0');
	}
	return fh;
}
int main(){
	cin>>x;
	for(long i=1;i<=x;i++){
		cin>>m[i];
		s[m[i]]=0;
	}
	for(long i=1;i<=x;i++){
		cin>>n[i];
		s[n[i]]=0;
	}
	for(long i=1;i<=x;i++){
		if((m[i][0]>='a'&&m[i][0]<='z')&&(n[i][0]>='a'&&n[i][0]<='z')){
			if(s[m[i]]==0&&s[n[i]]==0){
				tv++;
				ls[1][tv]=m[i];
				ls[2][tv]=n[i];
				continue;
			}
			if(s[m[i]]==s[n[i]]) continue;
			if(s[m[i]]!=0&&s[n[i]]==0){
				s[n[i]]=s[m[i]];
				continue;
			}
			if(s[m[i]]==0&&s[n[i]]!=0){
				s[m[i]]=s[n[i]];
				continue;
			}
			cout<<"NE";
			exit(0);
			continue; 
		}
		if((!(m[i][0]>='a'&&m[i][0]<='z'))&&(n[i][0]>='a'&&n[i][0]<='z')){
			long jc=js1(i);
			if(s[n[i]]==0){
				s[n[i]]=jc;
			}
			if(s[n[i]]!=jc){
				cout<<"NE";
				exit(0);
			}
			continue; 
		}
		if((m[i][0]>='a'&&m[i][0]<='z')&&(!(n[i][0]>='a'&&n[i][0]<='z'))){
			long jc=js2(i);
			if(s[m[i]]==0){
				s[m[i]]=jc;
			}
			if(s[m[i]]!=jc){
				cout<<"NE";
				exit(0);
			}
			continue; 
		}
		if(m[i]==n[i]) continue;
		cout<<"NE";
		exit(0);
	}
	for(long i=1;i<=tv;i++){
		if(s[ls[1][i]]==s[ls[2][i]]) continue;
		if(s[ls[1][i]]==0){
			s[ls[1][i]]=s[ls[2][i]];
			continue;
		}
		if(s[ls[2][i]]==0){
			s[ls[2][i]]=s[ls[1][i]];
			continue;
		}
		if(s[ls[1][i]]!=s[ls[2][i]]){
			cout<<"NE";
			exit(0);
		}
	}
	cout<<"DA";
	return 0;
}

以下代码过得了 #16 #25 但有别的点过不了:

#include <bits/stdc++.h>
using namespace std;
string m[50005],n[50005];
string ls[3][50005];
map<string,int>s;
int x;
int tv=0;
int js1(int q){
	int u=m[q].size();
	int fh=0;
	for(int i=0;i<u;i++){
		fh=(fh*10)+(m[q][i]-'0');
	}
	return fh;
}
int js2(int q){
	int u=n[q].size();
	int fh=0;
	for(int i=0;i<u;i++){
		fh=(fh*10)+(n[q][i]-'0');
	}
	return fh;
}
int main(){
	cin>>x;
	for(int i=1;i<=x;i++){
		cin>>m[i];
		s[m[i]]=0;
	}
	for(int i=1;i<=x;i++){
		cin>>n[i];
		s[m[i]]=0;
	}
	for(int i=1;i<=x;i++){
		//cout<<endl;
		//cout<<m[i]<<"\n";
		//cout<<n[i]<<"\n"; 
		if(m[i]==n[i]) continue;
		if((m[i][0]>='a'&&m[i][0]<='z')&&(n[i][0]>='a'&&n[i][0]<='z')){
			if(s[m[i]]==0&&s[n[i]]==0){
				tv++;
				ls[1][tv]=m[i];
				ls[2][tv]=n[i];
				continue;
			}
			if(s[m[i]]==s[n[i]]) continue;
			if(s[m[i]]!=0&&s[n[i]]==0){
				s[n[i]]=s[m[i]];
				continue;
			}
			if(s[m[i]]==0&&s[n[i]]!=0){
				s[m[i]]=s[n[i]];
				continue;
			}
			cout<<"NE";
			exit(0);
			continue; 
		}
		if((!(m[i][0]>='a'&&m[i][0]<='z'))&&(n[i][0]>='a'&&n[i][0]<='z')){
			int jc=js1(i);
			if(s[n[i]]==0){
				s[n[i]]=jc;
			}
			if(s[n[i]]!=jc){
				cout<<"NE";
				exit(0);
			}
			continue; 
		}
		if((m[i][0]>='a'&&m[i][0]<='z')&&(!(n[i][0]>='a'&&n[i][0]<='z'))){
			int jc=js2(i);
			if(s[m[i]]==0){
				s[m[i]]=jc;
			}
			if(s[m[i]]!=jc){
				cout<<"NE";
				exit(0);
			}
			continue; 
		}
		cout<<"NE";
		exit(0);
	}
	for(int i=1;i<=tv;i++){
		if(s[ls[1][i]]!=s[ls[2][i]]){
			cout<<"NE";
			exit(0);
		}
	}
	cout<<"DA";
	return 0;
}

悬关

2025/1/6 20:57
加载中...