微调,球条,玄关
查看原帖
微调,球条,玄关
737219
YONEX楼主2024/8/22 15:45
#include<bits/stdc++.h>
using namespace std;
int n,m1,m2;
int top1,top2;
const int MAXN=100005;
struct node{
	int a,b;
}x1[MAXN],x2[MAXN];
int a1[MAXN],b1[MAXN],a2[MAXN],b2[MAXN];
int f1[MAXN],f2[MAXN];
int end1[MAXN],end2[MAXN];
bool cmp(node x,node y){return x.a<y.a;}
int main(){
	cin>>n>>m1>>m2;
	bool f=0;
	for(int i=1;i<=m1;i++)cin>>x1[i].a>>x1[i].b;
	for(int i=1;i<=m2;i++)cin>>x2[i].a>>x2[i].b;
	sort(x1+1,x1+1+m1,cmp);
	sort(x2+1,x2+1+m2,cmp);
	for(int i=1;i<=m1;i++)
	{
		f=0;
		for(int j=1;j<=top1;j++){
			if(x1[i].a>=end1[j]){
				f=1;
				f1[j]++;
			    end1[j]=x1[i].b;
			    break;
			}
		}
		if(f==0)f1[++top1]=1,end1[top1]=x1[i].b;	
	}
    for(int i=1;i<=m2;i++)
    {
    	f=0;
		for(int j=1;j<=top2;j++){
			if(x2[i].a>=end2[j]){
				f=1;
				f2[j]++;
			    end2[j]=x2[i].b;
			    break;
			}
		}
		if(f==0)f2[++top2]=1,end2[top2]=x2[i].b;
	}
	
	for(int i=2;i<=top1;i++)f1[i]+=f1[i-1];
	for(int i=2;i<=top2;i++)f2[i]+=f2[i-1];
	for(int i=top1;i<=n;i++)f1[i]=f1[top1];
	for(int i=top2;i<=n;i++)f2[i]=f2[top2];
	int maxn=-1;
	for(int i=0;i<=n;i++)maxn=max(maxn,f1[i]+f2[n-i]);
	cout<<maxn;
	return 0;
}
2024/8/22 15:45
加载中...