贪心题目的笔记(活动数一定,房间数最少的模型)
作者:互联网
1.贪心的经典问题
(1)贪心算法我们在刚开始学习的时候遇到的往往是就一间房间,要求安排的活动数最多,这个我们已经非常熟悉了,只需要将活动按结束时间排好,然后将活动安排一下即可。
(2)证明正确性(AC题目时无需证明,根据感觉来即可):
2.另一个贪心问题
题目:
假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。输入要求:
第一行为活动的个数 N(1<=N<=1 000 000) 。
接下来 N 行为 Si 和 Fi(0<=Si<Fi<=2 000 000 000) ,分别代表第 i 个活动的开始时间和结束时间。活动 i 的区间段为 [Si,Fi)
输出要求:
输出有一行 M ,为所需教室的最小数量。
测试用例:
11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14 输出:5
贪心算法:按开始时间由早到晚进行排序,当一个活动安排不进当前任意一个教室时,重新开一间教室安排
贪心算法的证明:
若当前已经安排了k个活动,我们安排 第k+1个活动,若当前活动安排不进去那么后边的,因为贪心选择的是结束最早的,所以别的活动更不可能安排进去,此时我们有两个选择
(1)将安排好的活动取出一个,安排此活动进去,但这个活动开始时间比安排进去的这个活动开始还早,所以这个活动又安排不进去了(两个活动一定是互斥的)。
(2)所以我们只能再开一间教室并将活动安排进去。
在代码实现时利用堆来优化房间的处理判断是否可以再向里添加活动
标签:房间数,安排,教室,笔记,进去,算法,活动,贪心 来源: https://www.cnblogs.com/passingdragon/p/15639922.html