P11985 [JOIST 2025] 比太郎之旅 2 / Bitaro's Travel 2

题目背景

由于评测机性能差异,本题增加 1 秒时限。

题目描述

JOI 山脉由许多山峰组成,其地形被表示为一个 $H$ 行 $W$ 列的网格。其中: - 南北方向为纵向,东西方向为横向; - 位于北起第 $i$ 行($1 \leq i \leq H$)、西起第 $j$ 列($1 \leq j \leq W$)的单元格记为 $(i, j)$; - 每个单元格中恰好有一座山峰,其高度为 $T_{i,j}$。 比太郎可以通过跳高(high jump)在山峰间移动,其跳跃技能参数为 $L$。具体步骤如下: 1. 上升阶段:从当前山峰上竖直上升。设当前山峰高度为 $x$,则 比太郎会上升到海拔 $x + L + 0.5$ 的位置。 2. 水平移动阶段:在保持海拔不变的前提下,重复向四个相邻方向(上下左右)移动。途经的所有单元格的山峰高度必须低于当前海拔。 3. 降落阶段:最终降落在目标单元格的山峰上。 比太郎计划进行 $Q$ 次旅行。在第 $k$ 次旅行($1 \leq k \leq Q$)中,他希望**仅通过跳高**从起点 $(A_k, B_k)$ 移动到终点 $(C_k, D_k)$。需要解决的问题: - 判断每次旅行是否可行。 - 若可行,计算所需的最少跳高次数;否则输出 $-1$。

输入格式

> $H$ $W$ $L$\ > $T_{1,1}$ $T_{1,2}$ $\cdots$ $T_{1,W}$\ > $T_{2,1}$ $T_{2,2}$ $\cdots$ $T_{2,W}$\ > $\vdots$\ > $T_{H,1}$ $T_{H,2}$ $\cdots$ $T_{H,W}$\ > $Q$\ > $A_1$ $B_1$ $C_1$ $D_1$\ > $A_2$ $B_2$ $C_2$ $D_2$\ > $\vdots$\ > $A_Q$ $B_Q$ $C_Q$ $D_Q$

输出格式

输出 $Q$ 行。第 $k$ 行($1 \leq k \leq Q$)输出: - 若可行,输出最少跳高次数; - 否则输出 $-1$。

说明/提示

### 样例解释 #### 样例 $1$ 解释 对于第一次旅行,比太郎可以通过 $3$ 次跳高从单元格 $(1, 1)$ 的山峰移动到单元格 $(2, 2)$ 的山峰,具体步骤如下: 1. 第一次跳高 - 从单元格 $(1, 1)$ 的山峰顶点浮升,此时海拔为 $6.5$。 - 移动到单元格 $(1, 2)$。由于该单元格山峰高度为 $3$,低于当前海拔 $6.5$,移动有效。 - 降落在单元格 $(1, 2)$ 的山峰顶点。 2. 第二次跳高 - 从单元格 $(1, 2)$ 的山峰顶点浮升,此时海拔为 $8.5$。 - 移动到单元格 $(1, 1)$,再移动到单元格 $(2, 1)$。 - 降落在单元格 $(2, 1)$ 的山峰顶点。 3. 第三次跳高 - 从单元格 $(2, 1)$ 的山峰顶点浮升,此时海拔为 $13.5$。 - 移动到单元格 $(2, 2)$。 - 降落在目标单元格 $(2, 2)$ 的山峰顶点。 无法以少于 $3$ 次跳高完成此次旅行,因此第一行输出 `3`。 对于第二次旅行,无法通过跳高到达目标,因此第二行输出 `-1`。 该样例满足所有子任务的限制。 #### 样例 $2$ 解释 该样例满足所有子任务的限制。 ### 数据范围 - $1 \leq H, W$; - $2 \leq H \times W \leq 3\times 10^5$; - $1 \leq L \leq 10^9$; - $1 \leq T_{i,j} \leq 10^9$; - $1 \leq Q \leq 3\times 10^5$; - $1 \leq A_k,C_k\leq H$;$1\le B_k,D_k\le W$; - $(A_k, B_k) \neq (C_k, D_k)$; - 所有输入值为整数。 ### 子任务 | 子任务 | 分数 | $H\times W\le $ | 特殊性质 | | :-: | :-: | :-: | :-: | | $1$ | $10$ | $300$ | | | $2$ | $20$ | $3\times 10^3$ | | | $3$ | $20$ | $150\,000$ | $\text{A}$ | | $4$ | $30$ | $150\,000$ | | | $5$ | $20$ | 无额外限制 | | 特殊性质 $\text{A}$:$\forall 1\le i\le Q$,$(A_i,B_i)=(1,1)$。