P10804 [CEOI 2024] 玩具谜题

题目描述

**题目译自 [CEOI 2024](https://ceoi2024.fi.muni.cz/) Day2 T1「[Toy](https://ceoi2024.fi.muni.cz/page/tasks/statements/toy.pdf)」** CEOI 2024 的命题人 Ben 从科学委员会收到了一份礼物——一个玩具。这个玩具是个谜题,可以想象成一个 $H$ 行 $W$ 列的网格,上面放着一个金属物体。这个金属物体由两部分组成:一个横向的 $1$ 行 $K$ 列的部分和一个纵向的 $L$ 行 $1$ 列的部分,这两部分松散地连接在一起。它们都不能旋转,但可以在网格内水平或垂直滑动,只要它们始终重叠在一个方格上。 网格里还有一些障碍物。金属物体的任何部分都不能穿过障碍物,更糟糕的是,它们也不能(即使部分)移出网格。Ben 的任务是将金属物体从指定起始位置移动到(可能不同的)目标位置,使得两部分重叠在指定的目标方格上。 然而,Ben 玩这个玩具已经有一段时间了,还没有解开谜题。事实上,他开始怀疑组织者在捉弄他,给了他一个无解的谜题。因此,他向你求助,想知道这个谜题是否有解。

输入格式

输入的第一行包含四个空格分隔的整数 $W, H, K, L$,分别表示谜题的宽度、高度、横向部分的宽度和纵向部分的高度。第二行包含四个整数 $x_h, y_h, x_v, y_v$,表示横向部分最左上角方格的坐标和纵向部分最左上角方格的坐标。 行从上到下编号为 $0$ 到 $H-1$,列从左到右编号为 $0$ 到 $W-1$。$x$ 坐标表示列号,$y$ 坐标表示行号。 接下来的 $H$ 行每行包含 $W$ 个字符,表示网格。字符 `.` 表示空方格,字符 `X` 表示障碍物,字符 `*` 表示目标方格。 保证金属物体的初始位置合法,即两部分重叠在一个方格上,并且两部分不与障碍物重叠也不超出网格。 只有一个目标方格,即玩具中只有一个字符 `*`,它可能与金属物体的初始位置重叠。

输出格式

如果可以将金属物体移动到目标方格,则输出一行 `YES`,否则输出 `NO`。

说明/提示

**样例解释 1** 初始状态如下: ![](https://cdn.luogu.com.cn/upload/image_hosting/anp1jutg.png) 我们可以先将纵向部分向下移动一格,然后尽可能地交替移动横向和纵向部分,直到无法继续。接着,我们可以将纵向部分向上并向右移动,到达目标方格,最后将横向部分向上移动,也到达目标方格。 **样例解释 2** 无法移动纵向部分而不碰到障碍物,因此永远无法到达目标方格。 对于所有输入数据,满足: - $2 \leq W, H \leq 1\,500$ - $2 \leq K \leq W, 2 \leq L \leq H$ - $0 \leq x_h \leq W - K, 0 \leq y_h \leq H - 1$ - $0 \leq x_v \leq W - 1, 0 \leq y_v \leq H - L$ 详细子任务附加限制及分值如下表所示。 | 子任务 | 附加限制 | 分值 | | :--: | :--: | :--: | | $1$ | $W, H \le 50$ | $14$ | | $2$ | $W, H \le 90$| $21$ | | $3$ | $W, H \le 300, K, L \le 10$ | $9$ | | $4$ | $W, H \le 360$ | $29$ | | $5$ | 无附加限制| $27$ |