A5400 | Takahashi the Wall Breaker
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
高桥君想去鱼店买鳗鱼。
高桥君居住的城镇由 $H$ 行 $W$ 列的网格状区域构成,每个区域是道路或墙壁。
以下,将从上往下第 $i$ 行($1 \leq i \leq H$)、从左往右第 $j$ 列($1 \leq j \leq W$)的区域表示为区域 $(i, j)$。
各区域的信息由 $H$ 个长度为 $W$ 的字符串 $S_1, S_2, \ldots, S_H$ 给出。具体来说,当 $S_i$ 的第 $j$ 个字符($1 \leq i \leq H$,$1 \leq j \leq W$)为
高桥君可以按任意顺序重复执行以下两种操作:
注意:即使前 1 格或前 2 格位于城镇外,仍然可以进行前踢操作,但城镇外的区域不会发生变化。
高桥君最初位于区域 $(A, B)$,想要到达位于区域 $(C, D)$ 的鱼店。
保证高桥君初始所在的区域及鱼店所在的区域是道路。
请计算高桥君到达鱼店所需的最小前踢次数。
高桥君居住的城镇由 $H$ 行 $W$ 列的网格状区域构成,每个区域是道路或墙壁。
以下,将从上往下第 $i$ 行($1 \leq i \leq H$)、从左往右第 $j$ 列($1 \leq j \leq W$)的区域表示为区域 $(i, j)$。
各区域的信息由 $H$ 个长度为 $W$ 的字符串 $S_1, S_2, \ldots, S_H$ 给出。具体来说,当 $S_i$ 的第 $j$ 个字符($1 \leq i \leq H$,$1 \leq j \leq W$)为
. 时,区域 $(i, j)$ 是道路;当为 # 时,区域 $(i, j)$ 是墙壁。高桥君可以按任意顺序重复执行以下两种操作:
- 移动到上下左右相邻的、位于城镇内且为道路的区域。
- 选择一个上下左右方向,进行前踢。
注意:即使前 1 格或前 2 格位于城镇外,仍然可以进行前踢操作,但城镇外的区域不会发生变化。
高桥君最初位于区域 $(A, B)$,想要到达位于区域 $(C, D)$ 的鱼店。
保证高桥君初始所在的区域及鱼店所在的区域是道路。
请计算高桥君到达鱼店所需的最小前踢次数。
输入格式
第一行输入两个正整数 $H$,$W$
接下来$H$行,每行一个长度为$W$的字符串
最后一行输入四个数字 $A$ , $B$ , $C$ , $D$
接下来$H$行,每行一个长度为$W$的字符串
最后一行输入四个数字 $A$ , $B$ , $C$ , $D$
输出格式
输出高桥君到达鱼店所需的最小前踢次数。
输入输出样例
输入 #1
10 10 .......... #########. #.......#. #..####.#. ##....#.#. #####.#.#. .##.#.#.#. ###.#.#.#. ###.#.#.#. #.....#... 1 1 7 1
输出 #1
1
输入 #2
2 2 .# #. 1 1 2 2
输出 #2
1
输入 #3
1 3 .#. 1 1 1 3
输出 #3
1
输入 #4
20 20 #################### ##...##....###...### #.....#.....#.....## #..#..#..#..#..#..## #..#..#....##..##### #.....#.....#..##### #.....#..#..#..#..## #..#..#.....#.....## #..#..#....###...### #################### #################### ##..#..##...###...## ##..#..#.....#.....# ##..#..#..#..#..#..# ##..#..#..#..#..#..# ##.....#..#..#..#..# ###....#..#..#..#..# #####..#.....#.....# #####..##...###...## #################### 3 3 18 18
输出 #4
3
约束条件
- $1 \leq H \leq 1000$
- $1 \leq W \leq 1000$
- $S_i$ 是仅由
.和#组成的长度为 $W$ 的字符串 - $1 \leq A, C \leq H$
- $1 \leq B, D \leq W$
- $(A, B) \neq (C, D)$
- $H, W, A, B, C, D$ 均为整数
- 高桥君初始所在的区域及鱼店所在的区域保证是道路
样例解释 1
高桥君最初位于区域 $(1, 1)$。通过反复移动到道路区域,可以到达区域 $(7, 4)$。在区域 $(7, 4)$ 向左方向进行前踢后,区域 $(7, 3)$ 和 $(7, 2)$ 会从墙壁变为道路。之后,通过反复移动(包括新变为道路的区域)即可到达位于区域 $(7, 1)$ 的鱼店。此时前踢次数为 $1$ 次,且无法在不使用前踢的情况下到达鱼店,因此输出 $1$。
样例解释 2
高桥君最初位于区域 $(1, 1)$。向右方向进行前踢后,区域 $(1, 2)$ 会从墙壁变为道路(向右前 2 格超出城镇范围,因此无变化)。之后可以从区域 $(1, 1)$ 移动到区域 $(1, 2)$,再到达区域 $(2, 2)$ 的鱼店。此时前踢次数为 $1$ 次,且无法在不使用前踢的情况下到达鱼店,因此输出 $1$。
样例解释 3
前踢操作可能影响包含鱼店所在区域的区画,但鱼店所在区域原本就是道路,因此不会发生变化。特别是前踢操作不会破坏鱼店。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?