给定
输出最小组数。
第一行包含整数
接下来
输出一个整数,表示最小组数。
3
-1 1
2 4
3 5
2
前置题目:0908
前置知识:小根堆
本题知识:贪心-区间问题
- 将所有区间按左端点从小到大排序
- 从前往后处理每个区间,判断能否将其放到某个现有的组中 L[i] > Max_r
- 如果不能,则开新组,然后将其放进去
- 如果能,直接放进去并更新所在组的 Max_r
设答案为 ans,思路所求解为 cnt,证明 ans == cnt
- 因为 cnt 满足题意,而 ans 是满足题意的最小值,故 ans <= cnt
- 设当遍历到第 i 个区间时,前 cnt - 1 组与第 i 个区间都有交集。因为存在交集,所以之前 cnt - 1 个组的 Max_r 都大于 L_i,且因为是按照左端点排序的顺序遍历,所以前 cnt - 1 个组的左端点都小于 L_i。这证明至少有 cnt 个区间存在公共点 L_i。故 ans >= cnt
- ans == cnt ∎
go 的 heap 用的我真是无力吐槽...