廊桥随心配@谁
2026-10-17 17:43:33
发布于:上海
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N=1e5+5;
int n;
struct node{
int x,y;
};
vector<node>a,b;
bool cmp(node x,node y){return x.x<y.x;}
void solve(vector<int>& t,int m,vector<int>& res){
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
priority_queue<int,vector<int>,greater<int>>bian;
for(int i=1;i<=n;i++){
bian.push(i);
}
for(int i=1;i<=m;i++){
while(pq.size() && t[i].x>=pq.top().first){
bian.push(pq.top().second);
pq.pop();
}
int tt=bian.top();
res[tt]++;
bian.pop();
pq.push(make_pair(t[i].y,tt}));
}
for(int i=1;i<=n;i++){
res[i]+=res[i-1];
}
}
vector<int>res1(100000),res2(100000000);
int main(){
int m1,m2;
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++){
int x,y;
cin>>x>>y;
a.push_back({x,y});
}
for(int i=1;i<=m2;i++){
int x,y;
cin>>x>>y;
b.push_back({x,y});
}
sort(a.begin(),a.end(),cmp);
sort(b.begin(),b.end(),cmp);
solve(a,m1,res1);
solve(b,m2,res2);
int ans=0;
for(int i=0;i<=n;i++){
ans=max(ans,res1[i]+res2[n-i]);
}
cout<<ans;
return 0;
}
这里空空如也















有帮助,赞一个