QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#473315#7752. The Only Way to the DestinationztttttWA 8ms51076kbC++146.2kb2024-07-12 01:30:232024-07-12 01:30:23

Judging History

你现在查看的是最新测评结果

  • [2024-07-12 01:30:23]
  • 评测
  • 测评结果:WA
  • 用时:8ms
  • 内存:51076kb
  • [2024-07-12 01:30:23]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=1e5+10,M=1e6+10;
struct S{
	int x1,x2,y;
}s[N];
vector<pair<int,int>>v[M];
vector<int>vv[M];
int cnt,cnt1,zt[M],cot,ztt[M],pre[M],zqx,mp[M];
//struct SS{
//	int s,x,djg;
//}p[M]; 
pair<int,int>p[M];
string ans;
int flag;
int find(int x){
	if(pre[x]==0){
		return x;
	}else{
		pre[x]=find(pre[x]);
		return pre[x];
	}
}
bool cmp(S x,S y1){
	if(x.y!=y1.y){
		return x.y<y1.y;
	}else{
		return x.x1<y1.x1;
	}
}
int main(){
	int n,m,k;
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=k;i++){
		int x1,x2,y;
		scanf("%d%d%d",&x1,&x2,&y);
		s[i]={x1,x2,y};
	}
	sort(s+1,s+1+k,cmp);
	return 0;
	int cntt=0,syg=s[1].y;
//	cnt++;
//	cnt1++;
//	zt[cnt]=cnt1;
//	p[cnt1]={s[]}
int kt=s[1].y;
if(kt>=3){
	cout<<"NO"<<endl;
	return 0;
}
int kw=s[k].y;
if(m-kw>=2){
	cout<<"NO"<<endl;
	return 0;
}

if(kw-kt>=2*(k-1)+1){
	cout<<"NO"<<endl;
	return 0;
}
    if(m>=2*k+2){
    	cout<<"NO"<<endl;
    	return 0;
	}
	int qd=1;
	//puts("fuck");
	int ix=max((int)1,kt-1);
	int id=min(m,kw+1);
	for(int i1=ix;i1<=id;i1++){
		int i=i1-ix+1;
		int syg=1;
		for(int j=qd;j<=k;j++){
			if(s[j].y==i1){
				if(s[j].x1>syg){
					v[i].push_back({syg,s[j].x1-1});
					cnt1++;
					vv[i].push_back(cnt1);
				}
				syg=s[j].x2+1;
			}else{
				qd=j;
				break;
			}
		}
		if(syg<=n){
			v[i].push_back({syg,n});
			cnt1++;
			vv[i].push_back(cnt1);
		}
	}
	//cout<<"fuck"<<endl;
	//cout<<v[1].size()<<endl;
	for(int i=ix;i<id;i++){
		int i1=i-ix+1;
		int cnt=v[i1].size()-1,cot=v[i1+1].size()-1;
		//cout<<cnt<<" "<<cot<<endl;
		int l=0,r=0;
		//cout<<i<<endl;
		while(1){
			//cout<<l<<" "<<r<<endl;
				if(l>cnt||r>cot)break;
				if(v[i1][l].second<v[i1+1][r].first){
					l++;
				}else if(v[i1][l].second-v[i1+1][r].first>=1&&v[i1+1][r].second-v[i1][l].first>=1&&v[i1][l].second-v[i1][l].first>=1){
					ans="NO";
					flag=1;
					break;
				}else if(v[i1][l].second==v[i1+1][r].first){
					if(find(vv[i1][l])==vv[i1][l]&&find(vv[i1+1][r])==vv[i1+1][l]){
//						zqx++;
//						if(zqx>1){
//							ans="NO";
//							flag=1;
//							break;
//						}else{
							
								pre[find(vv[i1][l])]=find(vv[i1+1][r]);
							
//						}
					}else{
						if(find(vv[i1][l])!=find(vv[i1+1][r])){
							pre[find(vv[i1][l])]=find(vv[i1+1][r]);
						}else{
							ans="NO";
							flag=1;
							break;
						}
					}
					l++;
				}else if(v[i1][l].first==v[i1+1][r].second){
					if(find(vv[i1][l])==vv[i1][l]&&find(vv[i1+1][r])==vv[i1+1][l]){
//						zqx++;
//						if(zqx>1){
//							ans="NO";
//							flag=1;
//							break;
//						}else{
							
								pre[find(vv[i1][l])]=find(vv[i1+1][r]);
							
						//}
					}else{
						if(find(vv[i1][l])!=find(vv[i1+1][r])){
							pre[find(vv[i1][l])]=find(vv[i1+1][r]);
						}else{
							ans="NO";
							flag=1;
							break;
						}
					}
					r++;
				}else if(v[i1][l].first>v[i1+1][r].second){
					r++;
				}

			}
			if(flag)break;
	}
//	for(int i=1;i<=k;i++){
//		if(s[i].y==syg&&cntt==0){
//			if(i>=2){
//				if(s[i].x1-s[i-1].x2>1){
//					cnt++;
//					cnt1++;
//					zt[cnt]=cnt1;
//					p[cnt1]={s[i-1].x2+1,s[i].x1-1};
//				}
//			}else{
//					if(s[i].x1>1){
//						cnt++;
//						cnt1++;
//						p[cnt1]={1,s[i].x1-1};
//						zt[cnt]=cnt1;
//					}
//				}
//		}else if(s[i].y!=syg&&cntt==0){
//			cntt++;
//			syg=s[i].y;
//			if(i>=2){
//				if(s[i].x1-s[i-1].x2>1){
//					cot++;
//					cnt1++;
//					ztt[cot]=cnt1;
//					p[cnt1]={s[i-1].x2+1,s[i].x1-1};
//				}
//			}else{
//					if(s[i].x1>1){
//						cot++;
//						cnt1++;
//						p[cnt1]={1,s[i].x1-1};
//						ztt[cot]=cnt1;
//					}
//				}
//		}else if(cntt==1&&s[i].y==syg){
//			if(i>=2){
//				if(s[i].x1-s[i-1].x2>1){
//					cot++;
//					cnt1++;
//					ztt[cot]=cnt1;
//					p[cnt1]={s[i-1].x2+1,s[i].x1-1};
//				}
//			}else{
//					if(s[i].x1>1){
//						cot++;
//						cnt1++;
//						p[cnt1]={1,s[i].x1-1};
//						ztt[cot]=cnt1;
//					}
//				}
//		}else if(cntt>=1&&s[i].y!=syg){
//			int l=1;
//			int r=1;
//			while(1){
//				if(l>cnt||r>cot)break;
//				if(p[zt[l]].second<p[ztt[r]].first){
//					l++;
//				}else if(p[zt[l]].second-p[ztt[r]].first>=1&&p[ztt[r]].second-p[zt[l]].second>=1){
//					ans="NO";
//					flag=1;
//					break;
//				}else if(p[zt[l]].second==p[ztt[r]].first){
//					if(find(zt[l])==0&&find(ztt[r])==0){
//						zqx++;
//						if(zqx>1){
//							ans="NO";
//							flag=1;
//							break;
//						}else{
//							
//								pre[find(zt[l])]=find(ztt[r]);
//							
//						}
//					}else{
//						if(find(zt[l])!=find(ztt[r])){
//							pre[find(zt[l])]=find(ztt[r]);
//						}else{
//							ans="NO";
//							flag=1;
//							break;
//						}
//					}
//					l++;
//				}else if(p[zt[l]].first==p[ztt[r]].second){
//					if(find(zt[l])==0&&find(ztt[r])==0){
//						zqx++;
//						if(zqx>1){
//							ans="NO";
//							flag=1;
//							break;
//						}else{
//							
//								pre[find(zt[l])]=find(ztt[r]);
//							
//						}
//					}else{
//						if(find(zt[l])!=find(ztt[r])){
//							pre[find(zt[l])]=find(ztt[r]);
//						}else{
//							ans="NO";
//							flag=1;
//							break;
//						}
//					}
//					r++;
//				}else if(p[zt[l]].first>p[ztt[r]].second){
//					r++;
//				}
//
//			}	
//			if(flag)break;	
//			cntt++;	
//			for(int j=1;j<=cot;j++)zt[j]=ztt[j];
//			cot=0;
//			syg=s[i].y;
//		}else if(cntt>=1&&s[i].y==syg){
//			if(i>=2){
//				if(s[i].x1-s[i-1].x2>1){
//					cot++;
//					cnt1++;
//					ztt[cot]=cnt1;
//					p[cnt1]={s[i-1].x2+1,s[i].x1-1};
//				}
//			}else{
//					if(s[i].x1>1){
//						cot++;
//						cnt1++;
//						p[cnt1]={1,s[i].x1-1};
//						ztt[cot]=cnt1;
//					}
//				}
//		}
//	}
	if(flag==1)cout<<"NO"<<endl;
	else{
		for(int i=ix;i<=id;i++){
			int i1=i-ix+1;
			for(int j=0;j<vv[i1].size();j++){
				int zy=find(vv[i1][j]);
				if(mp[zy]==0){
					mp[zy]=1;
					zqx++;
				}
				if(zqx>1){
					flag=1;
					break;
				}
			}
			if(flag)break; 
		}
		if(flag)cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
	}
	return 0;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 8ms
memory: 51076kb

input:

5 3 2
2 5 1
1 4 3

output:


result:

wrong output format Unexpected end of file - token expected