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

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

[NHSPC 2023] E. 迷宮鑰匙圈

题目描述

小咪到夜市玩遊戲,贏得了一副鑰匙圈。這副鑰匙圈上有個迷宮面板,裡面有好幾顆小鋼珠:

將鑰匙圈的面板向左或向右旋轉 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 的例子:

输入格式

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 代表該格為迷宮擋板。

输出格式

如果存在使每顆小鋼珠都掉出迷宮的旋轉方式,請輸出

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

提示

測資限制

  • 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 無額外限制