区间选点
思路描述
将所有区间根据区间的右端点进行排序,首先,记录最开始右端点的区间值,遍历后面的区间。如果后面区间的左端点大于等于该值,那么说明可以使用一个点来表示。如果无法表示,那么就说明需要增加一个点来使其再区间的内部。
算法证明
设该算法得到的点数为res
,正确答案为ans
,下面证明$res == ans$。
证明$res \geq ans$
由于该算法肯定是正确的,而
ans
又是最小值,因此该不等式肯定成立。证明$res\leq ans$
在上述算法中,每次新记录一个右端点值的所有区间,实际上就是没有任意交集的区间,它们的个数正好是res
。根据题目要求的描述,如果有res
个没有交集的区间,那么至少就有res
个点,因此有$res\leq ans$
代码实现
1 |
|
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.