一道思维题。
首先我们需要转化一下题意。
对于两个相邻的区间 [ l i , r i ] , [ l i + 1 , r i + 1 ] [l_i,r_i],[l_{i+1},r_{i+1}] [li,ri],[li+1,ri+1],我们将这两个区间合并一下,得到能够连接这两个区间的线段长度: [ l i + 1 − r i , r i + 1 − l i ] [l_{i+1}-r_i,r_{i+1}-l_i] [li+1−ri,ri+1−li]。
这样,问题就变成了有若干个固定位置的点,用这些点去覆盖区间的问题。
将点按照其坐标进行排序,将这些区间按照左端点升序排序。
然后枚举每个点,对于所有左端点在这个点左边且没有使用过的区间,从中选出一条右端点最小但是大于这个点坐标的区间,用这个点覆盖这个区间。
上述过程可以使用优先队列来维护。
无解情况有哪些呢?
这个贪心应该是一个比较常见的套路了,但是思维难度相对较高。