#P11906. [NHSPC 2023] E. 迷宮鑰匙圈

    ID: 11764 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2023O2优化广度优先搜索 BFS台湾

[NHSPC 2023] E. 迷宮鑰匙圈

Description

小咪到夜市玩游戏,赢得了一副钥匙圈。这副钥匙圈上有个迷宫面板,里面有许多小钢珠:

将钥匙圈的面板向左或向右旋转 9090 度,可以使每颗仍在迷宫内的小钢珠向下掉落,直到该小钢珠掉出迷宫,碰到迷宫挡板,或碰到其他仍在迷宫内的小钢珠为止。更明确地说,这座迷宫可以用 N×MN\times M 的二维矩阵表示,一次的 9090 度旋转会将迷宫变换为 M×NM\times N 的二维矩阵,其中

  • 一次 9090 度左旋转会将位置 (i,j)(i, j) 变换为位置 (Mj+1,i)(M-j+1, i)
  • 一次 9090 度右旋转会将位置 (i,j)(i, j) 变换为位置 (j,Ni+1)(j, N-i+1)

此外,若旋转后位置 (i,j)(i, j) 有一颗小钢珠,则

  • 若存在某个 i>ii' > i 满足 (i,j)(i', j) 为迷宫挡板,则
    1. 设最小的 ii'ii^*
    2. (i,j),(i+1,j),,(i1,j)(i, j), (i+1, j), \ldots, (i^*-1, j) 间恰好有 kk 颗小钢珠,则原位置 (i,j)(i, j) 的小钢珠会掉到位置 (ik,j)(i^*-k, j)
  • 否则,该小钢珠将掉出迷宫。

给定迷宫与小钢珠的初始位置,请算出至少需要向左或向右旋转 9090 度几次,才能使每颗小钢珠都掉出迷宫。

以下是一个迷宫大小为 10×710\times7 的例子:

Input Format

nn mm
s1,1s_{1, 1} s1,2s_{1, 2} \ldots s1,ms_{1, m}
s2,1s_{2, 1} s2,2s_{2, 2} \ldots s2,ms_{2, m}
\vdots
sn,1s_{n, 1} sn,2s_{n, 2} \ldots sn,ms_{n, m}

  • nn 代表迷宫的行数。
  • mm 代表迷宫的列数。
  • si,js_{i, j} 代表位置 (i,j)(i, j) 的状态,以字符 bsw 表示,其中
    1. b 代表该格为空且有小钢珠。
    2. s 代表该格为空且没有小钢珠。
    3. w 代表该格为迷宫挡板。

Output Format

如果存在使每颗小钢珠都掉出迷宫的旋转方式,请输出

ans\textrm{ans}

其中 ans\textrm{ans} 为一个整数,代表所需的旋转次数。否则,输出

1-1

10 7
w w w w w w w
w s s s s s w
w s s s s s w
w s w w w s w
w s s s w s w
w s b b w s w
w w w w w s w
s s s s s s w
s s s s s s w
w w w w w w w
7
5 3
s w s
s s s
w b w
w b w
s w s
5
5 3
s w s
w s w
s b s
w b w
s w s
-1

Hint

测试数据限制

  • 1n151 \le n \le 15
  • 1m151 \le m \le 15
  • 对任意 i{1,2,,n}i \in \{1, 2, \ldots, n\}j{1,2,,m}j \in \{1, 2, \ldots, m\}si,js_{i, j} 只能是 bs、或 w
  • 满足 si,js_{i, j}b(i,j)(i, j) 对数介于 1133 之间。
  • 给定的迷宫保证不会有不稳定的状况,即若 si,js_{i, j}b,则必定存在某个 i>ii^* > i 满足
    1. si,js_{i^*, j}w
    2. si,j,si+1,j,,si1,js_{i, j}, s_{i+1, j}, \ldots, s_{i^*-1, j} 均为 b
  • nnmm 皆为整数。

评分说明

本题共有三组子任务,条件限制如下所示。 每一组可有一或多个测试数据,该组所有测试数据皆需答对才可获得该组分数。

子任务 分数 额外输入限制
1 3737 迷宫里的小钢珠数量为 11
2 2929 迷宫里的小钢珠数量不超过 22
3 3434 无额外限制