20pts求调||玄关
查看原帖
20pts求调||玄关
555617
Targanzqq楼主2024/7/10 10:34
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,m1,m2,a1[100001],b1[100001],a2[100001],b2[100001]; 
int p1[100001],p2[100001],top1,top2,ans;
struct plane{
	int l;int num;
	friend bool operator<(plane a,plane b){
		return a.l>b.l;
	}
}; 
priority_queue<plane> q1,q2;

struct use_to_sort{
	int a,b; 
}us1[100001],us2[100001]; 
bool mycmp(use_to_sort a,use_to_sort b){
	return a.a<b.a;
}
void st(){
	for(int i=1;i<=m1;i++)us1[i].a=a1[i],us1[i].b=b1[i];
	for(int i=1;i<=m2;i++)us2[i].a=a2[i],us2[i].b=b2[i];
	sort(us1+1,us1+m1+1,mycmp);
	sort(us2+1,us2+m2+1,mycmp);
	for(int i=1;i<=m1;i++)a1[i]=us1[i].a,b1[i]=us1[i].b;
	for(int i=1;i<=m2;i++)a2[i]=us2[i].a,b2[i]=us2[i].b;
}

signed main(){
	freopen("airport3.in","r",stdin);
	ios::sync_with_stdio(false);
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++)cin>>a1[i]>>b1[i];
	for(int i=1;i<=m2;i++)cin>>a2[i]>>b2[i];
	st();
	for(int i=1;i<=m1;i++){
		if(q1.empty()||q1.top().l>a1[i])p1[++top1]++,q1.push({b1[i],top1});
		else p1[q1.top().num]++,q1.push({b1[i],q1.top().num}),q1.pop();
	} 
	for(int i=1;i<=m2;i++){
		if(q2.empty()||q2.top().l>a2[i])p2[++top2]++,q2.push({b2[i],top2});
		else p2[q2.top().num]++,q2.push({b2[i],q2.top().num}),q2.pop();
	}
	for(int i=1;i<=max(m1,n);i++)p1[i]+=p1[i-1];
	for(int i=1;i<=max(m2,n);i++)p2[i]+=p2[i-1];
	for(int i=0;i<=n;i++){
		ans=max(ans,p1[n-i]+p2[i]);
	}
	cout<<ans;
}
2024/7/10 10:34
加载中...