蒟蒻TLE了,求助大佬!
查看原帖
蒟蒻TLE了,求助大佬!
751403
xzjxzjxzj楼主2023/10/8 00:57

这是测试点结果(可以这样说嘛

第一个测试点WA; 2-5、8、16AC; 其余TLE(悲

下面是代码,望大佬赐教

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int n,m1,m2;
int dl[100005];
int p[100005];

struct Time
{
	int a;
	int b;
}t1[100005],t2[100005];

bool cmp(Time t,Time s)
{
	return t.a<s.a;
}

int dp(int x,int m,Time t[100005])//x,m1//???
{
	memset(dl,0,sizeof(dl));
	int cnt=0;
	int vis=0;
	int sum=0;
	for(int i=1;i<=m;i++)//遍历m架飞机 
	{
		vis=0;//记录i有无停靠好 
		for(int j=1;j<=cnt;j++)//遍历已使用的廊桥 
		{
			if(dl[j]<=t[i].a)
			{
				dl[j]=t[i].b;
				vis=1;
				break;
			}
		}
		if(cnt<x && vis==0)
		{
			dl[++cnt]=t[i].b;
			vis=1;
		}
		if(vis==1)
		{
			sum++;
		}
	}
	return sum;
}


int main()
{
	cin>>n>>m1>>m2;
	for(int i=1;i<=m1;i++)
	{
		cin>>t1[i].a>>t1[i].b;
	}
	for(int i=1;i<=m2;i++)
	{
		cin>>t2[i].a>>t2[i].b;
	}
	sort(t1+1,t1+m1+1,cmp);
	sort(t2+1,t2+m2+1,cmp);
	
	int maxx=-0x3f3f3f3f;
	for(int i=1;i<=n;i++)
	{
		maxx=max(maxx,dp(i,m1,t1)+dp(n-i,m2,t2));
	}
	cout<<maxx<<endl;
	return 0;
}
2023/10/8 00:57
加载中...