#P10804. [CEOI2024] 玩具谜题

[CEOI2024] 玩具谜题

题目描述

题目译自 CEOI 2024 Day2 T1「Toy

CEOI 2024 的命题人 Ben 从科学委员会收到了一份礼物——一个玩具。这个玩具是个谜题,可以想象成一个 HHWW 列的网格,上面放着一个金属物体。这个金属物体由两部分组成:一个横向的 11KK 列的部分和一个纵向的 LL11 列的部分,这两部分松散地连接在一起。它们都不能旋转,但可以在网格内水平或垂直滑动,只要它们始终重叠在一个方格上。

网格里还有一些障碍物。金属物体的任何部分都不能穿过障碍物,更糟糕的是,它们也不能(即使部分)移出网格。Ben 的任务是将金属物体从指定起始位置移动到(可能不同的)目标位置,使得两部分重叠在指定的目标方格上。

然而,Ben 玩这个玩具已经有一段时间了,还没有解开谜题。事实上,他开始怀疑组织者在捉弄他,给了他一个无解的谜题。因此,他向你求助,想知道这个谜题是否有解。

输入格式

输入的第一行包含四个空格分隔的整数 W,H,K,LW, H, K, L,分别表示谜题的宽度、高度、横向部分的宽度和纵向部分的高度。第二行包含四个整数 xh,yh,xv,yvx_h, y_h, x_v, y_v,表示横向部分最左上角方格的坐标和纵向部分最左上角方格的坐标。

行从上到下编号为 00H1H-1,列从左到右编号为 00W1W-1xx 坐标表示列号,yy 坐标表示行号。

接下来的 HH 行每行包含 WW 个字符,表示网格。字符 . 表示空方格,字符 X 表示障碍物,字符 * 表示目标方格。

保证金属物体的初始位置合法,即两部分重叠在一个方格上,并且两部分不与障碍物重叠也不超出网格。

只有一个目标方格,即玩具中只有一个字符 *,它可能与金属物体的初始位置重叠。

输出格式

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

4 3 2 2
0 1 0 0
.X.*
....
...X
YES
2 3 2 3
0 1 0 0
.X
.*
.X
NO

提示

样例解释 1

初始状态如下:

toy-sample1-v3.svg

我们可以先将纵向部分向下移动一格,然后尽可能地交替移动横向和纵向部分,直到无法继续。接着,我们可以将纵向部分向上并向右移动,到达目标方格,最后将横向部分向上移动,也到达目标方格。

样例解释 2

无法移动纵向部分而不碰到障碍物,因此永远无法到达目标方格。

对于所有输入数据,满足:

  • 2W,H15002 \leq W, H \leq 1\,500
  • 2KW,2LH2 \leq K \leq W, 2 \leq L \leq H
  • 0xhWK,0yhH10 \leq x_h \leq W - K, 0 \leq y_h \leq H - 1
  • 0xvW1,0yvHL0 \leq x_v \leq W - 1, 0 \leq y_v \leq H - L

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 W,H50W, H \le 50 1414
22 W,H90W, H \le 90 2121
33 W,H300,K,L10W, H \le 300, K, L \le 10 99
44 W,H360W, H \le 360 2929
55 无附加限制 2727