求助,改不对
  • 板块学术版
  • 楼主bctj
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/2 15:20
  • 上次更新2023/12/2 16:41:42
查看原帖
求助,改不对
663745
bctj楼主2023/12/2 15:20

题目描述 有一个演讲大厅需要我们管理,演讲者们事先定好了需要演讲的起始时间和中止时间。我们想让演讲大厅得到最大可能的使用。我们要接受一些预定而拒绝其他的预定,目标是使演讲者使用大厅的时间最长。假设在某一时刻一个演讲结束,另一个演讲就可以立即开始。

请依据演讲者的申请,计算出演讲大厅最大可能的使用时间

输入 第一行为一个整数 N,N≤5000,表示申请的数目。 以下 n 行每行包含两个整数 p,k,1 ≤ p < k ≤ 30000,表示这个申请的起始时间和终止时间。 输出 包含一个整数,表示大厅最大可能的使用时间。 样例输入 Copy 12 1 2 3 5 0 4 6 8 7 13 4 6 9 10 9 12 11 14 15 19 14 16 18 20 样例输出 Copy 16

#include<bits/stdc++.h>
using namespace std;
struct qwq
{
	int x,y;
}a[5001];
int b[5001];
int qaq(qwq a,qwq b)
{
	if(a.x==b.x)
	{
		return a.y<b.y;
	}
	else
	{
		return a.x<b.x;
	}
}
int n,maax=0;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&a[i].x,&a[i].y);
	}
	sort(a+1,a+n+1,qaq);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<i;j++)
		{
			if(a[i].x>=a[j].y)
			{
				b[i]=max(b[i],b[j]);
			}
			b[i]+=a[i].y-a[i].x;
			maax=max(maax,b[i]);
		}
	}
	printf("%d",maax);
	return 0;
}

2023/12/2 15:20
加载中...