#P2111. 会议厅.填空题

会议厅.填空题

题目描述

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

需要计算演讲大厅最大可能的使用时间。

输入格式

第一行为一个整数 n ( n ≤ 10000 ),表示申请的数目。

以下 n 行每行包含两个整数 p,k ( 0 ≤ p < k ≤ 30000 ),表示这个申请的起始时间和中止时间。

输出格式

一个整数,表示大厅最大可能的使用时间。

样例

10
1500 2000
800 1100
600 900
500 900
1000 1400
1200 1600
150 250
100 300
1100 1300
0 400
1700

完善程序

#include<bits/stdc++.h>
using namespace std;
struct Node
{
	int L,R;
}x[10001];
bool cmp(Node i,Node j)
{
	return 填空(1); // 按照结束时间排序
}
int dp[10001];
int main()
{
	int n,i,j,ans=0;
	
	scanf("%d",&n);

	for(i=1;i<=n;i++)
		scanf("%d%d",&x[i].L,&x[i].R);

	sort(x+1,x+1+n,cmp);

	for(i=1;i<=n;i++)
	{
		dp[i] = 填空(2);
		for(j=1;填空(3);j++)
		{
			if(x[j].R<=x[i].L)
				dp[i] = max(填空(4),dp[i]);
		}
		ans = 填空(5);
	}

	printf("%d",ans);
	return 0;
}

填空(1): {{ input(1) }}

填空(2): {{ input(2) }}

填空(3): {{ input(3) }}

填空(4): {{ input(4) }}

填空(5): {{ input(5) }}