AT_abc246_e [ABC246E] Bishop 2

题目描述

有一个 $N \times N$ 的国际象棋棋盘。棋盘上从上往下第 $i$ 行,从左往右第 $j$ 列的格子称为格子 $(i, j)$。 棋盘的信息以 $N$ 个字符串 $S_i$ 给出。 字符串 $S_i$ 的第 $j$ 个字符 $S_{i,j}$ 包含以下信息: - 当 $S_{i,j} = \texttt{.}$ 时,格子 $(i, j)$ 上没有任何棋子。 - 当 $S_{i,j} = \texttt{\#}$ 时,格子 $(i, j)$ 上有一个白色兵(pawn)。这个兵不能被移动或移除。 现在在棋盘的格子 $(A_x, A_y)$ 上放置了一个白色主教(bishop)。 请你求出,按照国际象棋的规则(见下方注释),将这个主教从 $(A_x, A_y)$ 移动到 $(B_x, B_y)$ 所需的最少步数。 如果无法移动到目标位置,则输出 $-1$。

输入格式

输入以如下格式从标准输入读入: > $N$ $A_x$ $A_y$ $B_x$ $B_y$ > $S_1$ > $S_2$ > $\vdots$ > $S_N$

输出格式

请输出答案。

说明/提示

### 注释 放在格子 $(i, j)$ 上的白色主教可以按照以下规则每一步移动: - 对于每个正整数 $d$,如果满足以下所有条件,则可以移动到格子 $(i+d, j+d)$: - 格子 $(i+d, j+d)$ 在棋盘内。 - 对于所有正整数 $l \le d$,格子 $(i+l, j+l)$ 上没有白色兵。 - 对于每个正整数 $d$,如果满足以下所有条件,则可以移动到格子 $(i+d, j-d)$: - 格子 $(i+d, j-d)$ 在棋盘内。 - 对于所有正整数 $l \le d$,格子 $(i+l, j-l)$ 上没有白色兵。 - 对于每个正整数 $d$,如果满足以下所有条件,则可以移动到格子 $(i-d, j+d)$: - 格子 $(i-d, j+d)$ 在棋盘内。 - 对于所有正整数 $l \le d$,格子 $(i-l, j+l)$ 上没有白色兵。 - 对于每个正整数 $d$,如果满足以下所有条件,则可以移动到格子 $(i-d, j-d)$: - 格子 $(i-d, j-d)$ 在棋盘内。 - 对于所有正整数 $l \le d$,格子 $(i-l, j-l)$ 上没有白色兵。 ### 约束条件 - $2 \le N \le 1500$ - $1 \le A_x, A_y \le N$ - $1 \le B_x, B_y \le N$ - $(A_x, A_y) \ne (B_x, B_y)$ - $S_i$ 是由 `.` 和 `#` 组成的长度为 $N$ 的字符串 - $S_{A_x, A_y} = \texttt{.}$ - $S_{B_x, B_y} = \texttt{.}$ ### 样例解释 1 如下图所示,可以通过 $3$ 步将主教从 $(1, 3)$ 移动到 $(3, 5)$。无法在 $2$ 步以内完成。 - $(1, 3) \rightarrow (2, 2) \rightarrow (4, 4) \rightarrow (3, 5)$ ### 样例解释 2 无论如何移动主教,都无法将其从 $(3, 2)$ 移动到 $(4, 2)$。 由 ChatGPT 4.1 翻译