40pts 求调
查看原帖
40pts 求调
1121087
czy032321054楼主2024/10/11 23:02
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,m[2],cnt,num[2][maxn],ans;
pair<int,int>g[maxn];
priority_queue<pair<int,int> >q;
priority_queue<int>q1;
//上述优先队列中的元素均是负数 
int main(){
	cin>>n>>m[0]>>m[1];
	for(int p=0;p<=1;p++){
		cnt=0;
		while(q.size())q.pop();
		for(int i=1;i<=m[p];i++)
			cin>>g[i].first>>g[i].second;
		sort(g[p]+1,g[p]+1+m[p]);
		for(int i=1;i<=m[p];i++){
			while(q.size()&&-q.top().first<g[i].first){
				q1.push(q.top().second);
				q.pop();
			}
			if(q1.empty()){
				cnt++;
				q1.push(-cnt);
			}
			num[p][-q1.top()]++;
			q.push(make_pair(-g[i].second,q1.top()));
			q1.pop();
		}
		for(int i=1;i<=n;i++)
			num[p][i]+=num[p][i-1];
	}
	for(int i=0;i<=n;i++)
		ans=max(ans,num[0][i]+num[1][n-i]);
	cout<<ans;
}
2024/10/11 23:02
加载中...