45pts求调
查看原帖
45pts求调
494814
12345yes楼主2023/1/30 20:29
#include <bits/stdc++.h>
using namespace std;
int n,m1,m2,ans,cnt;
struct node{
	int a,b;
	bool operator<(const node &i)const{
		return a<i.a;
	}
}a[100010],b[100010];
multiset<int> ed;
int solve(int x,int m,node c[])
{
	ed.clear();
	cnt=0;
	int sum=0;
	if(x>0)
	{
		for(int i=1;i<=m;i++)
		{
			bool flag=0;
			if(!ed.empty())
			{
				int cur=*ed.begin();
				if(cur<c[i].a)
				{
					ed.erase(cur);
					ed.insert(c[i].b),flag=1,sum++;
				}
			}
			if(flag==0 && x>cnt)
				ed.insert(c[i].b),sum++,cnt++;
		}
	}
	return sum;
}
int main()
{
	scanf("%d%d%d",&n,&m1,&m2);
	for(int i=1;i<=m1;i++)
		scanf("%d%d",&a[i].a,&a[i].b);
	for(int i=1;i<=m2;i++)
		scanf("%d%d",&b[i].a,&b[i].b);
	sort(a+1,a+m1+1),sort(b+1,b+m2+1);
	for(int i=0;i<=n;i++)
		ans=max(ans,solve(i,m1,a)+solve(n-i,m2,b));
	printf("%d\n",ans);
	return 0;
}
2023/1/30 20:29
加载中...