社区讨论

省选T1求助

灌水区参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo2twxck
此快照首次捕获于
2023/10/23 19:43
2 年前
此快照最后确认于
2023/10/23 19:43
2 年前
查看原帖
求 Hack,只有90分,#4 WA
CPP
#include<bits/stdc++.h>
using namespace std;
void kread(int &x){
	x=0;
	int f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x*=10;x+=c-'0',c=getchar();}
	x*=f;
}
const int maxn=1e6;
struct edge{
	int l,r;
	bool operator < (const edge &A)const{
		return l<A.l;
	}
}b[maxn];
bool com(edge A,edge B){
	return A.l<B.l;
}
void xA(int n,int m){
	bool a[maxn];
	memset(a,false,sizeof(a));
	int l1;
	l1=1;
	for(int i=1;i<=m;i++){
		kread(b[i].l),kread(b[i].r);
	}
	sort(b+1,b+m+1,com);
	for(int i=1;i<=m;i++){
		if(b[i].l<=l1){
			a[b[i].r]=true;
			l1=max(l1,b[i].r);
		}
	}
	for(int i=2;i<=n;i++){
		if(a[i]){
			cout<<i<<' ';
		}
	}
	return;
}

void xBl(int n,int m,int x){
	bool a[maxn];
	memset(a,false,sizeof(a));
	int l1,f=x;
		for(int i=1;i<=m;i++){
		if(b[i].l<=x&&b[i].r>=x){
			f=i;
		}
	}
	l1=b[f].r;
	for(int i=f;i<=m;i++){
		if(b[i].l<=l1){
			a[b[i].r]=true;
			l1=max(l1,b[i].r);
		}
	}
	l1=b[f].l;
	for(int i=f;i>=1;i--){
		if(b[i].r>=l1){
			a[b[i].l]=true;
			l1=min(l1,b[i].l);
		}
	}
	for(int i=1;i<x;i++){
		if(a[i]){
			cout<<i<<' ';
		}
	}
}
void xBr(int n,int m,int x){
	bool a[maxn];
	memset(a,false,sizeof(a));
	int l1,f=x;
	for(int i=1;i<=m;i++){
		if(b[i].l<=x&&b[i].r>=x){
			f=i;
			break;
		}
	}
	l1=b[f].r;
	for(int i=f;i<=m;i++){
		if(b[i].l<=l1){
			a[b[i].r]=true;
			l1=max(l1,b[i].r);
		}
	}
	l1=b[f].l;
	for(int i=f;i>=1;i--){
		if(b[i].r>=l1){
			a[b[i].l]=true;
			l1=min(l1,b[i].l);
		}
	}
	for(int i=x+1;i<=n;i++){
		if(a[i]){
			cout<<i<<' ';
		}
	}
}
void xB(int n,int m,int x){
	for(int i=1;i<=m;i++){
		kread(b[i].l),kread(b[i].r);
	}
	sort(b+1,b+m+1,com);
	xBl(n,m,x);
	xBr(n,m,x);
	return;
}
int main(){
	//freopen("station.in","r",stdin);
	//freopen("station.out","w",stdout);
	int n,m,x;
	kread(n),kread(m),kread(x);
	if(x==1){
		xA(n,m);
		return 0;	
	}
	else{
		xB(n,m,x);
	}
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...