就离谱,我交上去95
查看原帖
就离谱,我交上去95
300226
Heartindream楼主2023/10/19 09:43

rt

第一个点woderful answer

不理解

#include<bits/stdc++.h>
using namespace std;
const int N=500009;
set<pair<int,int> > a,b;
pair<int,int> t;
int sa[N],sb[N];
int n,m1,m2;

int a_(){
	int res=0,now=0;
	while(1){
		auto t=a.lower_bound(make_pair(now,now));
		if(t==a.end()) break;
		res++;
		now=t->second;
		a.erase(t);
	}
	return res;
}
int b_(){
	int res=0,now=0;
	while(1){
		auto t=b.lower_bound(make_pair(now,now));
		if(t==b.end()) break;
		now=t->second;
		res++;
		b.erase(t);
	}
	return res;
}
int main(){
//	freopen("1.in","r",stdin);
	scanf("%d%d%d",&n,&m1,&m2);
	for(int i=1;i<=m1;i++){
		scanf("%d%d",&t.first,&t.second);
		a.insert(t);
	}
	for(int i=1;i<=m2;i++){
		scanf("%d%d",&t.first,&t.second);
		b.insert(t);
	}
	for(int i=1;i<=n;i++){
		sa[i]=sa[i-1]+a_();
	}
	for(int i=1;i<=n;i++){
		sb[i]=sb[i-1]+b_();
	}
	
	int ans=-1e9;
	for(int i=1;i<=n;i++){
		ans=max(ans,sa[i]+sb[n-i]);
	}
	cout<<ans<<endl;
	return 0;
}
2023/10/19 09:43
加载中...