题意简述
有n个城市,海拔高度互不相同,两城市间距离定义为海拔差的绝对值,且只能从编号小的城市前往编号大的城市。小A和小B驾驶一辆车游览这些城市,他们从某一个城市S出发,两人轮流开车(小A先开,小B后开):
- 每次换小B时,会前往与当前城市海拔差距最小的城市。
- 每次换小A时,会前往与当前城市海拔差距第二小的城市。
如果不存在下一个喜欢的城市,他们会结束旅行。另外他们不希望驾驶总路程超过x,如果前往下一个城市将会超过x,也会结束旅行。
已知n个城市的海拔高度h[i]。接下来请回答M个询问,每个询问会给定起点S、总路程限制x,求两人分别能行驶的公里数。
数据范围
1 <= n, M <= 105
0 <= x <= 109
-109 <= h[i] <= 109
分析
难点1:快速求解询问
这题的题意比较简单,主要难点是询问个数很多、数据规模特别大。
- 先考虑模拟的方法,复杂度将达到O(nM),一定会超时,肯定不能模拟。
- 再考虑预处理询问(合并处理相似询问),这需要看询问间有无共性或关联。但这些询问可能会以每一个城市作为起点,比如第一个询问给定(S=1, x=50),第二个询问给定(S=12, x=100),