题目大意:
给出n个区间,每个区间有个值$c_i$。现要你从中选出两个区间,使得它们不相交 && 区间长度之和恰好为 x。
无解时输出-1, 存在多个可行解时输出$c_i + c_j$ 最小的和。
解题思路:
第一感觉是排序后选定一个区间,然后二分找到满足值为$x - c_i$的那个区间,然后写炸了。
后来补题时发现可以用个vector将区间的左端点和值存下来,下标就是区间长度,这样查的时候就变得很好查了。然后每个区间按照左端点从小到大排好序,因为区间长度固定,这样遍历时就可以遍历区间长度为i的区间,对于长度为$x - i$的,只遍历在长度为i的区间的左边的区间并同时记录最小值就可以了。详细看代码吧。
Mycode:
1 |
|