萌新25分求助
查看原帖
萌新25分求助
806219
walker76楼主2022/10/27 21:44
#include <bits/stdc++.h>
using namespace std;

struct node {
	int ed, num;
};
node f1[100000 + 5], f2[100000 + 5];

struct plane {
	int st, ed;
};
plane p1[100000 + 5], p2[100000 + 5];
bool cmp(plane a, plane b) {
	return a.st < b.st;
}
int n, m1, m2,sum1[100005],sum2[100005];

int main() {
	scanf("%d%d%d", &n, &m1, &m2);
	int s, e;
	for (int i = 1; i <= m1; i++) {
		scanf("%d%d", &s, &e);
		p1[i].st = s;
		p1[i].ed = e;
	}
	//sort(p1 + 1, p1 + m1 + 1, cmp);
	//for(int i=1;i<=m1;i++){
	//	cout<<p1[i].st<<" "<<p1[i].ed<<endl;
	}
	for (int i = 1; i <= m2; i++) {
		scanf("%d%d", &s, &e);
		p2[i].st = s;
		p2[i].ed = e;
	}
	//for(int i=1;i<=m2;i++){
	//	cout<<p2[i].st<<" "<<p2[i].ed<<endl;
	//}
	sort(p1 + 1, p1 + m2 + 1, cmp);
	for (int i = 1; i <= m1; i++) {
		for (int j = 1; j <= n; j++) {
			if (f1[j].ed < p1[i].st) {
				f1[j].num++;
				f1[j].ed = p1[i].ed;
				break;
			}
		}
	}
	for (int i=1;i<=m2;i++){
		for (int j=1;j<=n;j++){
			if (f2[j].ed<p2[i].st){
				f2[j].num++;
				f2[j].ed=p2[i].ed;
				break;
			}
		}
	}
	for (int i=1;i<=n;i++){
		sum1[i]=sum1[i-1]+f1[i].num;
		sum2[i]=sum2[i-1]+f2[i].num;
		
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		ans=max(ans,sum1[i]+sum2[n-i]);
	}
	cout<<ans;
	return 0;
}
2022/10/27 21:44
加载中...