给定
输出可选取区间的最大数量。
第一行包含整数
接下来
输出一个整数,表示可选取区间的最大数量。
3
-1 1
2 4
3 5
2
前置题目:0905
前置知识:无
本题知识:贪心-区间问题
思路:
- 将每个区间按右端点从小到大排序
- 从前往后依次枚举每个区间
- 如果当前区间中已经包含点,则pass
- 否则,选择当前区间的右端点
贪心问题思路不复杂,难点在证明算法的正确性
证明:设题目的答案为 i,算法求出来的是 j,证明 i == j
- i >= j 按照上述思路求出的解,两两区间不相交满足题意,i 是满足题意的最大值,故 i >= j
- i <= j 反证法,假设 i > j,则最多有 i 个区间两两不相交,最少需要 i 个点覆盖所有区间,而根据上述思路只需 j 个点即可覆盖所有区间且 j < i,两相矛盾,故 i <= j
- i == j ∎
最大不相交区间数 == 最少覆盖区间点数