90pts?
查看原帖
90pts?
553673
ygkl9698楼主2022/10/15 10:21
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
typedef pair<int,int> P;
struct plane{
	int l,r;
}a[100010],b[100010];
int c1[100010],c2[100010];
bool cmp(plane a,plane b){
	return a.l<b.l;
}
priority_queue<P,vector<P>,greater<P> > q1,q2;
priority_queue<int,vector<int>,greater<int> > r1,r2;
int n,m1,m2;
int main(){
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++){
		cin>>a[i].l>>a[i].r;
		r1.push(i);
	}
	for(int i=1;i<=m2;i++){
		cin>>b[i].l>>b[i].r;
		r2.push(i);
	}
	sort(a+1,a+1+m1,cmp);
	sort(b+1,b+1+m2,cmp);
	for(int i=1;i<=m1;i++){
		while(!q1.empty()&&q1.top().first<a[i].l){
			r1.push(q1.top().second);
			q1.pop();
		}
		q1.push(make_pair(a[i].r,r1.top()));
		c1[r1.top()]++;
		r1.pop();
	}
	for(int i=1;i<=m2;i++){
		while(!q2.empty()&&q2.top().first<b[i].l){
			r2.push(q2.top().second);
			q2.pop();
		}
		q2.push(make_pair(b[i].r,r2.top()));
		c2[r2.top()]++;
		r2.pop();
	}
	for(int i=2;i<=m1;i++){
		c1[i]+=c1[i-1];
	}
	for(int i=2;i<=m2;i++){
		c2[i]+=c2[i-1];
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		ans=max(ans,c1[i]+c2[n-i]);
	}
	cout<<ans;
	return 0;
}

咋回事?

2022/10/15 10:21
加载中...