在数轴上有 个闭区间 。现在要从中选出 个区间,使得这 个区间共同包含至少一个位置。换句话说,就是使得存在一个 ,使得对于每一个被选中的区间 。
对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 的长度定义为 ,即等于它的右端点的值减去左端点的值。
求所有合法方案中最小的花费。如果不存在合法的方案,输出 。
Constraints
, ,
Solution
将区间按长度排序,然后观察可得,答案一定是在覆盖了同一个点连续的 个区间里。所以可以按顺序用线段树维护一个点被覆盖的次数,当覆盖次数达到 时更新答案,移动头指针并撤销影响。区间端点需要离散化。
Code
1 |
|