求加强数据
查看原帖
求加强数据
115067
Adis_FireDevil楼主2021/10/27 00:48

这个n*n的莫名其妙A了

#include<bits/stdc++.h>
using namespace std;
int n,m1,m2,num1=1,num2=1,maxn,ans;
struct sd{
	int k,e;
}a1[100011],b1[100011];
struct sl{
	int s,e;
}a[100011],b[100011];
int cmp(sl a,sl b){
	return a.s<b.s;
}
int main(){
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++){
		cin>>a[i].s>>a[i].e;
	}
	for(int i=1;i<=m2;i++){
		cin>>b[i].s>>b[i].e;
	}
	sort(a+1,a+m1+1,cmp);
	sort(b+1,b+m2+1,cmp);
	a1[1].k=a[1].e;
	a1[1].e=1;
	b1[1].k=b[1].e;
	b1[1].e=1;
	int j;
	for(int i=2;i<=m1;i++){
		for(j=1;j<=num1;j++){
			if(a1[j].k<a[i].s){
				a1[j].e++;
				a1[j].k=a[i].e;
				break;
			}
		}
		if(j==num1+1){
			num1++;
			a1[num1].e=1;
			a1[num1].k=a[i].e;
		}
	}
	for(int i=2;i<=m2;i++){
		for(j=1;j<=num2;j++){
			if(b1[j].k<b[i].s){
				b1[j].e++;
				b1[j].k=b[i].e;
				break;
			}
		}
		if(j==num2+1){
			num2++;
			b1[num2].e=1;
			b1[num2].k=b[i].e;
		}
	}
	for(int i=1;i<=n;i++)maxn+=a1[i].e;
	ans=maxn;
	for(int i=1;i<=n;i++){
		maxn=maxn+b1[i].e-a1[n-i+1].e;
		ans=max(ans,maxn);
	}
	cout<<ans;
}
2021/10/27 00:48
加载中...