Description:
在数轴上有\(N\) 个闭区间 \([l_1,r_1],[l_2,r_2],...,[l_n,r_n]\) 。现在要从中选出\(M\) 个区间,使得这\(M\) 个区间共同包含至少一个位置。换句话说,就是使得存在一个 \(x\) ,使得对于每一个被选中的区间\([l_i,r_i]\) ,都有 \(l_i≤x≤r_i\) 。
对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间\([l_i,r_i]\) 的长度定义为\(r_i-l_i\) ,即等于它的右端点的值减去左端点的值。
求所有合法方案中最小的花费。如果不存在合法的方案,输出\(-1\)
Hint:
\(n\le 5*10^5\)
Solution:
水题,观察到\(Ans=min\{max_{len}-min_{len}(存在一个x覆盖>=m)\}\)
这种形式的式子就一定是双指针了
所以按长度排序,双指针维护一下条件,线段树判一下\(>=m\)就行了
数组开大点.....
#include