AT_abc400_d.[ABC400D] Takahashi the Wall Breaker

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

高桥君想去鱼店买鳗鱼。

高桥君居住的城镇由 HH 行 WW 列的网格状区域构成,每个区域是道路或墙壁。
以下,将从上往下第 ii 行(1≤i≤H1 \leq i \leq H)、从左往右第 jj 列(1≤j≤W1 \leq j \leq W)的区域表示为区域 (i,j)(i, j)。
各区域的信息由 HH 个长度为 WW 的字符串 S1,S2,…,SHS_1, S_2, \ldots, S_H 给出。具体来说,当 SiS_i 的第 jj 个字符(1≤i≤H1 \leq i \leq H,1≤j≤W1 \leq j \leq W)为 . 时,区域 (i,j)(i, j) 是道路;当为 # 时,区域 (i,j)(i, j) 是墙壁。

高桥君可以按任意顺序重复执行以下两种操作:

  • 移动到上下左右相邻的、位于城镇内且为道路的区域。
  • 选择一个上下左右方向,进行前踢。
    当高桥君进行前踢时,可以将当前区域在该方向上 前 1 格 和 前 2 格 的区域(如果它们是墙壁)变为道路。
    注意:即使前 1 格或前 2 格位于城镇外,仍然可以进行前踢操作,但城镇外的区域不会发生变化。

高桥君最初位于区域 (A,B)(A, B),想要到达位于区域 (C,D)(C, D) 的鱼店。
保证高桥君初始所在的区域及鱼店所在的区域是道路。
请计算高桥君到达鱼店所需的最小前踢次数。

输入格式

输入通过标准输入给出,格式如下:

HH WW
S1S_1
S2S_2
⋮\vdots
SHS_H
AA BB CC DD

输出格式

输出高桥君到达鱼店所需的最小前踢次数。

输入输出样例

  • 输入#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≤H≤10001 \leq H \leq 1000
  • 1≤W≤10001 \leq W \leq 1000
  • SiS_i 是仅由 . 和 # 组成的长度为 WW 的字符串
  • 1≤A,C≤H1 \leq A, C \leq H
  • 1≤B,D≤W1 \leq B, D \leq W
  • (A,B)≠(C,D)(A, B) \neq (C, D)
  • H,W,A,B,C,DH, W, A, B, C, D 均为整数
  • 高桥君初始所在的区域及鱼店所在的区域保证是道路

样例解释 1

高桥君最初位于区域 (1,1)(1, 1)。通过反复移动到道路区域,可以到达区域 (7,4)(7, 4)。在区域 (7,4)(7, 4) 向左方向进行前踢后,区域 (7,3)(7, 3) 和 (7,2)(7, 2) 会从墙壁变为道路。之后,通过反复移动(包括新变为道路的区域)即可到达位于区域 (7,1)(7, 1) 的鱼店。此时前踢次数为 11 次,且无法在不使用前踢的情况下到达鱼店,因此输出 11。

样例解释 2

高桥君最初位于区域 (1,1)(1, 1)。向右方向进行前踢后,区域 (1,2)(1, 2) 会从墙壁变为道路(向右前 2 格超出城镇范围,因此无变化)。之后可以从区域 (1,1)(1, 1) 移动到区域 (1,2)(1, 2),再到达区域 (2,2)(2, 2) 的鱼店。此时前踢次数为 11 次,且无法在不使用前踢的情况下到达鱼店,因此输出 11。

样例解释 3

前踢操作可能影响包含鱼店所在区域的区画,但鱼店所在区域原本就是道路,因此不会发生变化。特别是前踢操作不会破坏鱼店。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页