思路一:见这篇题解,当然只用看step3之后的就好了
思路二:
我使用的是转换对象法。从线段的角度不好考虑,我们从元素的角度考虑
如果我们已经确定了一个元素\(a_i\)为最大值,我们考虑所有线段
如果一个线段不包含\(a_i\),那么肯定不选择,因为他不会让最大值增加,反而可能会让最小值增加
如果一个线段包含\(a_i\):如果这个线段不包含最终的最小值,那么肯定要选择;如果包含了最终的最小值,那么选不选择无所谓
所以我们出来一个算法,就是只选择覆盖这个点的线段,把这些线段全部加入,最后找到整个区间的最小值,更新答案就好了
当然我赛时的时候其实用了思路一中关于最小值在两端的trick,但是我不是他这么证明的,而是这样:我们考虑某个点为最小值,此时我的答案就是包含了最大值但是不包含最小值的线段的个数,不失一般性,假设其在最大值右边,那么我们将最小值一直往右边移动,那么符合条件的线段的个数显然一直在增加,所以得证
标签:Medium,包含,线段,最小值,Design,最大值 From: https://www.cnblogs.com/dingxingdi/p/18088013