社区讨论

关于莫名的编译失败

P7913[CSP-S 2021] 廊桥分配参与者 7已保存回复 11

讨论操作

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

当前回复
11 条
当前快照
1 份
快照标识符
@lobhldgf
此快照首次捕获于
2023/10/29 21:08
2 年前
此快照最后确认于
2023/11/04 02:23
2 年前
查看原帖
开了c++14后就编译错误
CPP
#include<bits/stdc++.h>
#define Max(x,y) (x>y? x:y)
using namespace std;
const int ma=3e5+100;
int n,m1,m2;
struct rec{
	int be;
	int ed;
	int vis=0;
	bool operator < (const rec &y)const {return be<y.be;}
}a[ma],b[ma];

struct node{
	int cnt=0;
	int id=214748364;
	bool operator < (const node &b) const {return id<b.id;};
}p1[ma],p2[ma];
int s1[ma],s2[ma];
int ans=0;
int main(){
//	freopen("airport.in","r",stdin);
//	freopen("airport.out","w",stdout);
	scanf("%d %d %d",&n,&m1,&m2);
	for(int i=1;i<=m1;i++)scanf("%d %d",&a[i].be,&a[i].ed);
	for(int i=1;i<=m2;i++)scanf("%d %d",&b[i].be,&b[i].ed);
	sort(a+1,a+m1+1);
	sort(b+1,b+m2+1);
	for(int i=1;i<=n;i++){
		int now=0,j=0;
		while(j<=m1){
			int l=j,r=m1;
			while(l<=r){
				int mid=(l+r)>>1;
				if(a[mid].be>now ){
					j=mid;
					r=mid-1;
				}
				else l=mid+1;
			} 
			for(;j<=m1;j++)
			if(a[j].be>now && (!a[j].vis)){
				if(now==0) p1[i].id=a[j].be;
				now=a[j].ed;
				a[j].vis=1;
				p1[i].cnt++;
			}
		}
		now=0;
		j=1;
		while(j<=m2){
			int l=j,r=m2;
			while(l<=r){
				int mid=(l+r)>>1;
				if(b[mid].be>now){
					j=mid;
					r=mid-1;
				}
				else l=mid+1;
			} 
			for(;j<=m2;j++)
			if(b[j].be>now && (!b[j].vis)){
				if(now==0) p2[i].id=b[j].be;
				now=b[j].ed;
				b[j].vis=1;
				p2[i].cnt++;
			}
		}
	}
	sort(p1+1,p1+n+1);
	sort(p2+1,p2+n+1);
	for(int i=1;i<=n;i++){
		s1[i]=s1[i-1]+p1[i].cnt;
		s2[i]=s2[i-1]+p2[i].cnt;
	}
	for(int i=0;i<=n;i++){
		ans=Max(ans,s1[i]+s2[n-i]);
	}
	cout<<ans;
}

回复

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

正在加载回复...