C. 迷宫移动(maze)

    传统题 文件IO:maze 1000ms 256MiB 文件IO:maze

迷宫移动(maze)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“赛后递交”以递交本题。

题目描述

小Z手上有一个大小为 n×mn\times m 的迷宫,迷宫的每一个格子都包含 a,b,ca,b,c 三种字母中的一个。

同时他手上还有一个长度为 33 的字符串 S1S2S3S_1S_2S_3,也是由 a,b,ca,b,c 三种字母组成。

小Z 每次可以选中上下左右其中一个方向,并移动 kk 步 (k∈1,2,3)(k\in {1,2,3}),要求移动到的格子中的字母必须等于 SkS_k。每次移动之后,字符串要进行循环左移操作:SbScSa←SaSbScS_bS_cS_a\leftarrow S_aS_bS_c

询问对于网格图中的每一个格子,按照以上要求移动到右下角 (n,m)(n,m) 的最少移动次数是多少。如果无法到达,输出 -1

输入格式

第一行,两个正整数 n,mn,m,表示网格图的大小

第二行,一个长度为 33 的字符串 S1S2S3S_1S_2S_3

接下来 nn 行,每行为长度为 mm 的仅由 a,b,ca,b,c 组成的字符串

输出格式

nn 行,每行 m m 个数字,第 ii 行,第 jj 列的数字表示该位置到达终点 (n,m)(n,m) 的最少移动次数,不可能的话输出 -1。

输入输出样例

3 4
abc
aabc
acaa
babc
2 -1 3 5
-1 2 5 3
1 -1 2 0

样例 #1\tt \#1说明

从方格 (1,1)(1,1) 出发,当前 S=abcS=abc;

向右移动 33 格到达 (1,4)(1,4),当前方格为 c,S3=cS_3=c,移动完成后 SS 变为 bca;

向下移动 22 格到达 (3,4)(3,4),当前方格为 S2=cS_2=c,移动完成后 SS 变为 cab。

从方格 (2,4)(2,4) 出发,当前 S=abcS=abc; 向左移动 11 格到达 (2,3)(2,3),当前方格为 aa,S1=aS_1 =a,移动完成后 SS 变为 bca;

向下移动 11 格到达 (3,3)(3,3),当前方格为 bb,S1=bS_1=b,移动完成后 SS 变为 cab; 向右移动 11 格到达 (3,4)(3,4),当前方格为 cc,S1=cS_1=c,移动完成后 SS 变为 abc。

1 9
aaa
aaaaaaaaa
3 3 2 2 2 1 1 1 0
7 4
aab
bbcb
ccba
cbbc
bbca
acbb
cacb
bcbb
4 -1 -1 -1
-1 -1 3 2
5 -1 -1 3
3 3 3 1
2 3 4 3
3 7 3 3
1 3 -1 0

数据范围

50%:n×m≤100050\%:n\times m\le1000

另外 10%:S=xxx10\%:S=xxx 并且所有格子都为 xx

100%:1≤n,m≤1000100\%:1\le n,m\le 1000

【2026CSP-J联测】第一套

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-9-20 16:30
结束于
2026-9-20 19:00
持续时间
3 小时
主持人
参赛人数
21