#5751. 活动安排
活动安排
题目描述
学校的小礼堂每天都会有许多活动,有些活动的时间会冲突,因此需要选择一些活动进行安排。现在有 n 个活动,每个活动都有一个开始时间和结束时间。要求选出尽可能多的活动,使得它们之间互不冲突(即任意两个活动的时间区间不重叠)。
输入格式
第一行一个整数 n,表示活动数量。 接下来 n 行,每行两个整数 s 和 e,分别表示活动的开始时间和结束时间。
输出格式
一行一个整数,表示最多能安排的活动数量。
样例输入1
4
1 3
2 5
3 6
5 7
样例输出1
2
样例解释1
选择活动 1(1-3)和活动 4(5-7),可以安排 2 个活动,这是最优解。
样例输入2
6
1 4
3 5
0 6
5 7
3 9
5 9
样例输出2
3
样例解释2
选择活动 1(1-4)、活动 4(5-7),以及不与其他活动冲突的活动,最多可安排 3 个活动。
数据范围
- 对于 30% 的数据,1 ≤ n ≤ 10
- 对于 60% 的数据,1 ≤ n ≤ 1000
- 对于 100% 的数据,1 ≤ n ≤ 10^5,0 ≤ s < e ≤ 10^9
提示
这是一道经典的贪心问题。贪心策略:按照结束时间从小到大排序,每次选择结束时间最早且与已选活动不冲突的活动。
证明:选择结束时间最早的活动可以为后面的活动留出更多时间,从而可能安排更多的活动。