#P16050. [Oni2024国家队选拔赛]Piramida金字塔
[Oni2024国家队选拔赛]Piramida金字塔
题目描述
骑着骆驼,在沙尘暴中向前……
Robert 在沙漠中迷路了。由于沙尘暴,他看不清远处。
沙漠可以表示为一个 行 列的字符矩阵。矩阵中的每个格子表示一种地标,例如金字塔、迷宫遗迹、仙人掌、沙丘等,用一个小写英文字母表示。
为了让 Georgian 判断自己在哪里,Robert 会把当前格子的字母发给 Georgian,然后继续移动以获取更多信息。更准确地说,Robert 从某个任意格子开始,先发送该格子的字母。之后他每次可以向北、东、南、西四个方向之一移动到相邻格子;每进入一个新格子,就发送该格子的字母。Robert 可以多次经过同一个格子,并且每次经过都会发送该格子的字母。
Georgian 发现 Robert 似乎中了诅咒,他发送的字符串总是循环重复的。也就是说,Robert 发送的字符串形如
即字符串 连续拼接 次。
请帮助 Georgian 判断 Robert 最后可能位于哪些位置。
任务
给定沙漠地图矩阵、字符串 ,以及 次询问 。
对于每次询问,回答:若 Georgian 收到的字符串是 重复 次,那么 Robert 最后可能位于多少个不同的格子。
称 Robert 最后可能位于某个格子,当且仅当存在一条从任意起点出发、始终不走出矩阵的路径,使得沿途经过格子的字母序列恰好等于 重复 次,并且路径最后停在该格子。
注意:路径的第一个格子也会贡献一个字符,因此若 ,询问 对应的路径字符数为 。
输入格式
第一行包含两个整数 ,表示矩阵的行数和列数。
接下来 行,每行是一个长度为 的小写字母串,表示矩阵的一行。
第 行包含字符串 。
第 行包含一个整数 ,表示询问次数。
下一行包含 个整数 。
输出格式
输出一行,包含 个整数,依次表示每次询问的答案,整数之间用空格分隔。
数据范围与子任务
- ;
- ;
- ;
- ,对所有 ;
- ,对所有 。也就是说,询问中的 按非降序给出。
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | 6 | ,, |
| 2 | 13 | , |
| 3 | 10 | |
| 4 | 9 | |
| 5 | 16 | |
| 6 | 46 | 无额外限制 |
样例 1
输入
3 4
cbaz
azzz
bczz
abc
3
1 2 3
输出
2 1 0
解释
第一问中,Robert 观察到字符串 abc。最后他可能位于第 行第 列,或第 行第 列,因此答案为 。
第二问中,Robert 观察到字符串 abcabc。最后他只可能位于第 行第 列,因此答案为 。
第三问中,Robert 观察到字符串 abcabcabc。矩阵中不存在任何格子可以作为结束位置,因此答案为 。
样例 2
输入
1 5
aabaa
aaab
2
1 2
输出
1 1
解释
第一问中,Robert 观察到字符串 aaab。他可以从第 列或第 列开始,最终都会到达第 列,因此答案为 。注意如果从第 列或第 列开始,则不存在符合该字符串的路径。
第二问中,Robert 观察到字符串 aaabaaab。所有合法路径最终都会到达第 列,因此答案仍为 。