#P11478. [2023省队模拟]矩阵补全
[2023省队模拟]矩阵补全
题目描述
本来今天小 是想让你补全一个矩阵的,但是他突然发现自己把矩阵剩下部分的信息也搞丢了。
具体来讲,他的矩阵是一个 行 列的 矩阵 (下标从 开始),有如下性质:
把每一行的值拼起来形成一个二进制数,那么这个数属于一个给定的集合 ,即满足
$$\forall 0 \le i \lt n, S \ni \sum\limits^{m-1}_{j=0} a_{ij}2^j $$对于每一列的性质,我们用两个长度为 的数组 ( )和 ( )来描述。对于每个 :
• 若 ,则满足第 列的每个元素都等于 ; • 若 ,则满足第 列的所有元素的 按位或 和等于 ; • 若 ,则满足第 列的所有元素的 按位与 和等于 ; • 若 ,则满足第 列的所有元素的 按位异或 和等于 。
不幸的是,小 把数组 也给搞忘了,只记得 和 ,所以你需要帮助他回忆起数组 。
具体而言,他会向你询问 次,每次给出一个可能的 ,你需要回答满足条件的矩阵的个数。
输入格式
第一行两个正整数 和 ,表示矩阵的行数和列数; 第二行一个长度为 的 字符串 ,第 个位置为 表示 ,易知不在此范围的数不影响答案; 第三行 个数表示数组 ; 第四行一个正整数 ,表示询问次数; 接下来 行,每行一个整数 ,表示把给出的数组 拼成二进制数的结果,即满足 。
输出格式
对于每次询问,输出满足条件的矩阵个数。由于数值可能很大,你只需要输出答案取模 的结果。
数据范围
对于所有测试点:对于所有测试点, $1 \le n \le 10^9, 1 \le m \le 20, 1 \le Q \le 10^5, b_i \in [0, 3], 0 \le x \lt 2^m$ 。
每个测试点的具体限制见下表:
测试点编号 | |||
---|---|---|---|
输入样例 1
2 2
0101
1 2
4
0
1
2
3
输出样例 1
0
3
0
1