一个简单的判无解调了1.5h求助,急!
查看原帖
一个简单的判无解调了1.5h求助,急!
802681
wangziyue_AK楼主2025/1/25 18:01

本题判无解给定一堆左闭右开区间,就是判有没有某处区间个数大于 m+mxm+mx。离散化是贺的,其他也基本是贺的。我没有抄题解,只是这一部分改不出来改成这样的。


	for(int i=1;i<=n;i++) b[i]=a[i].s,b[n+i]=a[i].t;
	sort(b+1,b+(n<<1)+1);
	int tot=unique(b+1,b+(n<<1)+1)-b-1;
	for(int i=1;i<=n;i++){
		a[i].s=lower_bound(b+1,b+tot+1,a[i].s)-b;
		a[i].t=lower_bound(b+1,b+tot+1,a[i].t)-b;
	}
	for(int i=1;i<=n;i++) c[a[i].s]++,c[a[i].t]--;
	for(int i=1;i<=tot;i++){
		sum[i]=sum[i-1]+c[i];
		if(sum[i]>mx+m){
			puts("impossible");return;
		}
	}
	memset(c,0,sizeof(c));
2025/1/25 18:01
加载中...