题目大意:
在一个n层高的楼层里,有m块呈直线连在一起的区域,有cl个楼梯和ce个电梯分别在 $a_1$ ~ $a_{cl}$ 和 $b_1$ ~ $b_{ce}$的位置上,从这个位置可以上到上一层楼或者下一层楼。楼梯1s可以上|下一层楼,电梯1s可以上|下$\leq$ v个楼层,从一块到相邻的一块也需要1s的时间。有q个询问,问最少经过多少时间可以从$x1, y1$到达$x2, y2$。
解题思路:
首先想到的是看走楼梯和走电梯哪个时间最少。如果走楼梯,可以走靠近当前位置的左边最近的或者右边最近的,其他同方向位置的楼梯花费的时间一定大于等于这两个位置。电梯同理。
接下来就是找位置了。找这4个位置的时候,因为给出的电梯/楼梯位置是升序的,所以可以用二分查找。一开始写的是分别二分查这4个位置,后来发现只要查两个位置就好了,比如查电梯的第一个$\geq$y1的位置后,另一个要找的位置就是这个位置左边的那个(如果存在的话)。
【注意:】这里有个细节问题不要忽略,就是两位置在一层楼的时候,这时既不需要走楼梯也不需要走电梯。
Mycode(手写二分):
1 |
|
Mycode(stl二分):
1 |
|