15分求助
查看原帖
15分求助
796667
ZY_jiang楼主2024/7/16 11:00
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
const int N=1e5+10;
struct node{
	ll st,ed;
};
node p1[N],p2[N];
ll n,m,m1,m2,ans,f1[N],f2[N],s1[N],s2[N];
bool cmp(node a,node b){
	return a.st<b.st;
}
int main(){
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++){
		cin>>p1[i].st>>p1[i].ed;
	}
	for(int i=1;i<=m2;i++){
		cin>>p2[i].st>>p2[i].ed;
	}
	sort(p1+1,p1+m1+1,cmp);
	sort(p2+1,p2+m2+1,cmp);
//	for(int i=0;i<=n;i++){
//		m=n-i;
//		priority_queue<ll,vector<ll>,greater<ll> >q;
//		q.push(0);
//		ll ans1=0;
//		for(int j=1;j<=m1;j++){
//			if(p1[j].st>q.top()){
//				q.pop();
//				q.push(p1[j].ed);
//			}
//			else{
//				q.push(p1[j].ed);
//			}
//			
//			if(q.size()>=i){
//				ans1=j;
//				break;
//			}
//		}
//		priority_queue<ll,vector<ll>,greater<ll> >p;
//		p.push(0);
//		ll ans2=0,len2=1;
//		while(p.size()<m){
//			if(p.top()<p2[len2].st){
//				p.push(p2[len2].ed);
//				p.pop();
//			}
//			else{
//				p.push(p2[len2].ed);
//			}
//			ans2++;
//			len2++;
//		}	
//		ans=max(ans1,ans2);
//		cout<<i<<" "<<m<<endl;
//		cout<<ans1<<" "<<ans2<<endl;
//	}
	priority_queue<ll,vector<ll>,greater<ll> >q;
//	q.push(0);
	for(int i=1;i<=m1;i++){
		if(!q.empty()&&p1[i].st>q.top()){
			q.pop();
			q.push(p1[i].ed);
		}
		else{
			q.push(p1[i].ed);
		}
		f1[q.size()]++;
	}
	priority_queue<ll,vector<ll>,greater<ll> >p;
//	p.push(0);
	for(int i=1;i<=m2;i++){
		if(!p.empty()&&p2[i].st>p.top()){
			p.pop();
			p.push(p2[i].ed);
		}
		else{
			p.push(p2[i].ed);
		}
		f2[p.size()]++;
	}
	for(int i=2;i<=n;i++){
		f1[i]=f1[i-1]+f1[i];
		f2[i]=f2[i-1]+f2[i];
	}
	for(int i=0;i<=n;i++) ans=max(ans,f1[i]+f2[n-i]);
	cout<<ans;
	return 0;
}
2024/7/16 11:00
加载中...