CF877D Olya and Energy Drinks
题目描述
Olya 喜欢能量饮料。她非常喜欢,以至于她的房间里到处都是喝完的饮料罐。
形式化地说,她的房间可以用一个 $n \times m$ 的网格表示,每个格子要么是空的,要么被饮料罐占据。
Olya 喝了很多能量饮料,现在她每秒可以跑 $k$ 米。每一秒她可以选择四个方向之一(上、下、左或右),然后在该方向上连续跑 $1$ 到 $k$ 米。当然,她只能经过空的格子。
现在 Olya 需要从格子 $(x_{1},y_{1})$ 跑到格子 $(x_{2},y_{2})$。如果她以最优方式移动,最少需要多少秒?
保证 $(x_{1},y_{1})$ 和 $(x_{2},y_{2})$ 这两个格子都是空的,这两个格子可以是同一个。
输入格式
第一行包含三个整数 $n$、$m$、$k$($1 \leq n, m, k \leq 1000$)——表示房间的大小和 Olya 的速度。
接下来 $n$ 行,每行包含 $m$ 个字符,第 $i$ 行第 $j$ 个字符是 "\#",表示格子 $(i, j)$ 被饮料罐占据,否则是 ".",表示格子是空的。
最后一行包含四个整数 $x_{1},y_{1},x_{2},y_{2}$($1 \leq x_{1}, x_{2} \leq n$,$1 \leq y_{1}, y_{2} \leq m$),表示起点和终点的坐标。
输出格式
输出一个整数,表示 Olya 从 $(x_{1},y_{1})$ 到 $(x_{2},y_{2})$ 所需的最少时间(秒)。
如果无法从 $(x_{1},y_{1})$ 到达 $(x_{2},y_{2})$,输出 $-1$。
说明/提示
在第一个样例中,Olya 第一秒向右跑 $3$ 米,第二秒向下跑 $2$ 米,第三秒向左跑 $3$ 米。
在第二个样例中,Olya 需要向右跑 $3$ 秒,然后向下跑 $2$ 秒,再向左跑 $3$ 秒。
Olya 不推荐大家喝能量饮料,并且认为这其实并不好。
由 ChatGPT 5 翻译