这个为什么全部re了
查看原帖
这个为什么全部re了
373738
rheinmetall楼主2021/10/24 12:15
 
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
int k,m1,m2;
struct node{
	int f,t;
};
int cmp(node a,node b)
{
	if(a.f<b.f)
	return 1;
	else return 0;
}
int dp[100005];
node gn[100005];
node gj[100005];
bool f1[100005];
bool f2[100005];
int ans;
int alans;
int dfs1(int kk,int num)
{
	ans=max(ans,num);
	for(int i=kk;i<=m1;i++)
	{
		if(f1[i]==0&&gn[kk].t<gn[i].f)
		{
			f1[i]=1;
			dfs1(i,num+1);
			break;
		}
	}
}
int dfs2(int kk,int num)
{
	ans=max(ans,num);
	for(int i=kk;i<=m2;i++)
	{
		if(f2[i]==0&&gj[kk].t<gj[i].f)
		{
			f2[i]=1;
			dfs2(i,num+1);
			break;
		}
	}
}
int main()
{
//	freopen("airport.in","r",stdin);
//	freopen("airport.out","w",stdout);
	scanf("%d%d%d",&k,&m1,&m2);
	for(int i=1;i<=m1;i++)
	{
		scanf("%d%d",&gn[i].f,&gn[i].t);
	}
	for(int i=1;i<=m2;i++)
	{
		scanf("%d%d",&gj[i].f,&gj[i].t);
	}
	sort(gn+1,gn+m1+1,cmp);
	sort(gj+1,gj+m2+1,cmp);
	int ws=1;
	int aans1[100005]={};
	int aans2[100005]={};
	for(int i=1;i<=m1;i++)
	{
		if(f1[i]==0)
		{
			f1[i]=1;
			ans=0;
			dfs1(i,1);
			aans1[ws]=ans+aans1[ws-1];
			ws++;
		}
	}
	ws=1;
	for(int i=1;i<=m2;i++)
	{
		if(f2[i]==0)
		{
			f2[i]=1;
			ans=0;
			dfs2(i,1);
			aans2[ws]=ans+aans2[ws-1];
			ws++;
		}
	}
	for(int i=0;i<=k;i++)
	alans=max(aans1[i]+aans2[k-i],alans);
	printf("%d ",alans);
	printf("\n");
	return 0;
}
2021/10/24 12:15
加载中...