#P51492. 「NOI2021」机器人游戏
「NOI2021」机器人游戏
题目描述
小 R 有 ()个机器人和 张纸带,第 ()个机器人负责对第 张纸带进行操作。对于每张纸带,它们都被从左到右分成了 ()个格子,依次编号为 。每个格子有 种状态:1. 格子上写有数字 ;2. 格子上写有数字 ;3. 格子是一个空格子。
在任意时刻,机器人必须站在纸带上的一个格子中。在设定好机器人在纸带上的初始位置后,第 个机器人会依次执行预先设定的操作序列 ,操作由 R
、0
、1
、*
四种字符组成,其中:
R
表示机器人向右走一格,如果右边没有格子,则机器人会原地爆炸;0
表示如果机器人所在格子非空,则将该格子上的数字改为 ,否则不修改;1
表示如果机器人所在格子非空,则将该格子上的数字改为 ,否则不修改;*
表示如果机器人所在格子非空,则将格子上的数字 改为 ,否则不修改。
第 张纸带的状态可以用一个长度为 的序列表示,每个元素为 0
、1
或 -
(空格子),依次表示其每个格子的状态。第 张纸带的初始状态称为机器人 的输入 ,操作执行完成后纸带的状态称为机器人 的输出 。注意,如果机器人爆炸了,那么这个机器人就没有输出。
可以发现,如果一个格子为空,那么机器人永远不会修改它。所以每个机器人都有如下特性:如果第 个机器人所在的纸带上的所有格子都为空,那么它就不会执行任何操作,它的输出即为所有格子都为空。
现在小 R 给定了每一个机器人的输入 (即每张纸带的初始状态)以及目标输出 。小 R 希望小 D 找到一个位置 (),使得所有机器人都能以其所在纸带的第 个格子为初始位置,在不爆炸的情况下执行完所有操作,并且满足第 个机器人的输出为 。
小 D 花了几毫秒解决了问题,现在他想知道,有多少个输入和输出的组合方式使得上述问题有解,即有多少种为每个机器人设定输入 和目标输出 的方式,使得至少存在一个位置 (),使得所有机器人都能以其所在纸带的第 个格子为起点,在不爆炸的情况下执行完所有操作,且满足第 个机器人的输出为 。请你帮助小 D 解决这个问题,由于最终的答案可能很大,请你输出答案对 取模后的余数。
两个组合方式不同当且仅当,存在至少一个机器人,它的输入或是目标输出在两个方式中不同。
输入格式
第一行包含两个正整数 ,分别表示每张纸带上的格子数和纸带数量。
接下来 行,第 行输入一个仅包含 R
0
1
*
这四种字符的字符串 ,表示第 个机器人的操作序列。
输出格式
仅一行一个正整数,表示答案模 后的余数。
样例 1
2 1
1R*
9
方案编号 | 输入 | 目标输出 | 可行初始位置 |
---|---|---|---|
-- |
-- |
||
0- |
1- |
||
1- |
1- |
||
-0 |
-1 |
||
-1 |
-0 |
||
00 |
11 |
||
10 |
11 |
||
01 |
10 |
||
11 |
10 |
表中 -
表示空格子。注意方案 的输入和输出中有两个空格子。
当输入全为空时,初始位置可以是 或 ,因为根据题意,输入全为空时机器人不会执行任何操作。
当输入不全为空时,初始位置只能为 ,如果初始位置为 机器人一定会爆炸。所以此时实际执行的操作是将第一格的数字改为 ,并将第二格的数字 改为 。
3 2
1R0
*
1468
可以用容斥原理来计算这个样例。
- 初始位置 可以使得执行完所有操作后满足条件。那么第一个机器人的纸带 号格子要么输入输出都是空,要么目标输出是 (输入无所谓),所以有 种方案; 号格子要么输入输出都是空,要么目标输出是 ,也是 种方案; 号格子要么输入输出都是空,要么输入和目标输出相同(因为没有对该格子执行任何操作),同样是 种方案,共 种方案。第二个机器人的 号格子要么输入输出都是空,要么输入和目标输出不同,是 种方案, 号和 号格子也都是 种方案,共 种方案。所以总共 种方案。
- 初始位置 可以使得执行完所有操作后满足条件。那么第一个机器人的纸带三个格子都是 种方案,其中 号格子要么输入输出都为空,要么相同; 号格子要么输入输出都为空,要么目标输出是 ; 号格子的输入输出要么都为空,要么输出是 ,共 种方案。第二个机器人的 号格子要么输入输出都是空,要么输入和目标输出不同,是 种方案; 号和 号格子要么输入输出都为空,要么输入输出相同,也都是 种方案,共 种方案。总共 种方案。
- 初始位置 可以使得执行完所有操作后满足条件。那么第一个机器人的纸带必须输入输出全为空(否则爆炸),只有 种方案。第二个机器人是 种方案,总共 种方案。
- 初始位置 都满足条件。这要求第一个机器人的 号格子输入输出都为空; 号格子的输入输出都为空或都为 ; 号格子的输入输出都为空或都为 ,所以第一个机器人的纸带有 种方案。第二个机器人 号格子和 号格子都为空, 号格子有 种方案,第二个机器人的 号和 号格子必须都为空, 号格子要么输入输出都为空,要么输入和输出相同,有 种方案。总共 种方案。
- 初始位置 都满足条件。那么第一个机器人的纸带必须输入输出全为空(否则爆炸),只有 种方案。第二个机器人 号和 号格子都为空, 号格子有 种方案。总共 种方案。
- 初始位置 都满足条件。那么第一个机器人的纸带必须输入输出全为空,只有 种方案。第二个机器人 号和 号格子都为空, 号格子有 种方案。总共 种方案。
- 初始位置 都满足条件。那么两个机器人的输入输出必须都为空,总共 种方案。
根据容斥原理,最后的答案为 。
样例 3
见附加文件中的 robot/robot3.in
与 robot/robot3.ans
。
样例 4
见附加文件中的 robot/robot4.in
与 robot/robot4.ans
。
数据范围与提示
对于所有测试点:,,。
测试点编号 | 特殊限制 | ||
---|---|---|---|
无 | |||
A | |||
B | |||
无 |
特殊限制 A:操作序列中不存在 R
。
特殊限制 B:每个操作序列中,R
的数量至多 个。