求大佬帮我卡卡常
查看原帖
求大佬帮我卡卡常
226367
glorious_dream楼主2021/11/4 20:29
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int M = 100010;
struct name{
	int kai,jie;
}a[M];
inline bool cmp(name a,name b){
	return a.kai < b.kai;
}
inline int max(int a,int b)
{
    return a>b?a:b;
}
int n,m1,m2;
int ans,sum1[M],sum2[M];
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
priority_queue<int,vector<int>,greater<int> > q1,q2;
int main(){
	//freopen("airport.in","r",stdin);
	//freopen("airport.out","w",stdout);
	n=read();
	m1=read();
	m2=read();
	for(int i=1 ; i<=m1 ; ++i){
		a[i].kai=read();
		a[i].jie=read();
	}
	sort(a+1,a+m1+1,cmp);
	sum1[0] = 0;
	sum2[0] = 0;
	for(int i=1 ; i<=n ; ++i){
		int cnt = i;
		int sum = 0;
		for(int j=1 ; j<=m1 ; ++j){
			if(j==1){
				q1.push(a[j].jie);
				sum++;
				continue;
			}
			if(a[j].kai < q1.top()){
				if(cnt-1 <= 0){
					continue;
				}
				else{
					cnt--;
					sum++;
					q1.push(a[j].jie);
					continue;
				}
			}
			else{
				sum++;
				q1.push(a[j].jie);
				q1.pop();
				continue;
			}
		}
		sum1[i] = sum;
	}
	for(int i=1 ; i<=m2 ; ++i){
		a[i].kai=read();
		a[i].jie=read();
	}
	sort(a+1,a+m2+1,cmp);
	for(int i=1 ; i<=n ; ++i){
		int cnt = i;
		int sum = 0;
		for(int j=1 ; j<=m2 ; ++j){
			if(j==1){
				q2.push(a[j].jie);
				sum++;
				continue;
			}
			if(a[j].kai < q2.top()){
				if(cnt-1 <= 0){
					continue;
				}
				else{
					cnt--;
					sum++;
					q2.push(a[j].jie);
					continue;
				}
			}
			else{
				sum++;
				q2.push(a[j].jie);
				q2.pop();
				continue;
			}
		}
		sum2[i] = sum;
	}	
	for(int i=0 ; i<=n ; ++i){
		ans = max(ans,sum1[i] + sum2[n-i]);
	}
	printf("%d\n",ans);
	return 0;
}
2021/11/4 20:29
加载中...