为什么20分?
查看原帖
为什么20分?
638148
liujiaxi123456楼主2022/11/25 14:27
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

namespace ljx_9420yy {
	
	const int maxn = 1e5+5;
	int ans, tot, n, m1, m2, s1[maxn], s2[maxn], cnt1[maxn], cnt2[maxn], t1[maxn], t2[maxn];
	
	struct node {
		int a, b, id;
	} f1[maxn], f2[maxn];

	bool cmp(node x, node y) {
		if(x.a != y.a)	return x.a < y.a;
		else	return x.b < y.b;
	}
	int main() {
		cin>> n>> m1>> m2;
		for(int i=1; i<=m1; i++) {
			cin>> f1[i].a>> f1[i].b;
		}
		for(int i=1; i<=m2; i++) {
			cin>> f2[i].a>> f2[i].b;
		}
		sort(f1+1, f1+1+m1, cmp);
		sort(f2+1, f2+1+m2, cmp);
		tot = m1;
		for(int i=1; i<=n && tot != 0; i++) {
			s1[i] = s1[i-1];
			for(int j=1; j<=m1; j++) {
				if(f1[j].id == 1)	continue;
				if(f1[j].a >= t1[i]) {
					t1[i] = f1[j].b;
					f1[j].id = 1;
					cnt1[i]++;
					tot--;
					s1[i]++;
				}
			}
		}
		tot = m2;
		for(int i=1; i<=n && tot != 0; i++) {
			s2[i] = s2[i-1];
			for(int j=1; j<=m2; j++) {
				if(f2[j].id == 1)	continue;
				if(f2[j].a >= t2[i]) {
					t2[i] = f2[j].b;
					f2[j].id = 1;
					cnt2[i]++;
					tot--;
					s2[i]++;
				}
			}
		}
		ans = n;
		for(int i=0; i<=n; i++) {
			ans = max(ans, s1[i]+s2[n]-s2[i]);
		}
		cout<< ans;
		return 0;
	}
}

int main() {
	ljx_9420yy::main();
	return 0;
}
2022/11/25 14:27
加载中...