#lg15130. [ROIR 2026] 超级跳跃

[ROIR 2026] 超级跳跃

[AdditionalFile5567.zip](file://AdditionalFile5567.zip?type=additional_file)

#5567. 「ROIR 2026 Day1」山峰跳跃

标签: 传统 | 时间限制: 1000 ms | 内存限制: 512 MiB |

题目描述

译自 ROI Regional 2026 Day1 T4. Прыжки по вершинам

在电脑游戏《超级跳跃》中,英雄需要在山脉的峰顶之间跳跃,目标是到达带有旗帜的终点峰顶,完成关卡。

山脉由 nn 个连续的峰顶组成,第 ii 个峰顶位于位置 ii,高度为 hih_i。英雄可以从第 ii 个峰顶直接跳到第 jj 个峰顶 (i<j)(i < j),条件是:在直线飞行路径上,没有其他峰顶严格高于连接 (i,hi)(i, h_i)(j,hj)(j, h_j) 的线段。更正式地说:不存在 kk (i<k<j)(i < k < j),使得点 (k,hk)(k, h_k) 严格位于线段 (i,hi)(i, h_i)-(j,hj)(j, h_j) 的上方。

「击败AI」公司正在训练神经网络来控制游戏中的英雄。为了生成训练数据,需要回答多个询问:对于给定的左右端点 l,rl, r (1lrn)(1 \leq l \leq r \leq n),计算从峰顶 ll 出发,到达峰顶 rr 所需的最少跳跃次数。

输入格式

第一行一个整数 nn (1n105)(1 \leq n \leq 10^5),表示峰顶数量。

第二行 nn 个整数 h1,h2,,hnh_1, h_2, \dots, h_n (0hi1012)(0 \leq h_i \leq 10^{12}),表示各峰顶高度。

第三行一个整数 qq (1q105)(1 \leq q \leq 10^5),表示询问数量。

接下来 qq 行,每行两个整数 li,ril_i, r_i (1lirin)(1 \leq l_i \leq r_i \leq n),表示一次询问的参数。

输出格式

对每个询问输出一行一个非负整数,表示从 lil_i 到达 rir_i 所需的最少跳跃次数。

样例

输入

8
5 3 4 3 6 2 1 4
3
1 8
2 7
4 4

输出

2
2
0

样例中的第二个询问(从峰顶 22 到峰顶 77):

英雄可以访问峰顶 2572 \to 5 \to 7,共进行 22 次跳跃。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制 子任务依赖
11 99 n,q300n, q \leq 300
22 99 n,q5000n, q \leq 5000 11
33 1414 hi10h_i \leq 10
44 2121 存在某个 kk,使得所有查询都有 likril_i \leq k \leq r_i
55 2727 n,q5104n, q \leq 5 \cdot 10^4 1,21, 2
66 2020 无附加限制 151\sim 5