背景
本题为 P17410 【MX-X31-T6】「FAOI-R14」数据生成器
的加强版,唯一的区别是 n,m 的范围。
题目描述
小 A 给梦熊周赛出了一道题:
给定两个整数序列 a1,a2,…,an 和 b1,b2,…,bm,以及一个元素均属于 {0,1,2} 的 n×m 矩阵 c。
对于 c 中的每个 2,你需要将其替换为 0 或 1;矩阵中原有的 0 和 1 保持不变。替换后得到一个 01 矩阵 d。矩阵 d 需要满足:
- 对于所有 i∈[1,n],均有 ∑j=1mdi,j≥ai;
- 对于所有 j∈[1,m],均有 ∑i=1ndi,j≥bj;
在所有满足上述条件的矩阵 d 中,你需要最小化矩阵中 1 的数量。
若矩阵 d 满足上述条件,且不存在另一个满足上述条件、矩阵中 1 的数量不超过它的矩阵,则称 d 是原问题的唯一最优解。
小 A 是凉心出题人,最喜欢干的事就是脚造数据。小 A 首先选定正整数 n,m,以及一个 n×m 的集合矩阵 S;其中对于所有 i∈[1,n],j∈[1,m],均有 Si,j⊆{0,1,2} 且 Si,j=∅。
随后,小 A 按照以下方式相互独立地生成一份数据 (a,b,c):
- 对于所有 i∈[1,n],从整数集合 {0,1,…,m} 中等概率选取 ai;
- 对于所有 j∈[1,m],从整数集合 {0,1,…,n} 中等概率选取 bj;
- 对于所有 i∈[1,n],j∈[1,m],从集合 Si,j 中等概率选取 ci,j。
因此,一共可能生成 $(m+1)^n(n+1)^m\prod_{i=1}^{n}\prod_{j=1}^{m}|S_{i,j}|$ 份不同的数据。
显然,原问题可能存在多个最优解,作为凉心出题人的小 A 自然不愿意编写 SPJ。不过考虑到梦熊周赛的题目出锅会被扣工资,小 A 还是想要知道不写 SPJ 也能正常评测的概率。
小 A 给你他的 n,m、集合矩阵 S,以及一个固定的 n×m 的 01 矩阵 h。你需要求出所有可能的数据 (a,b,c) 中,有多少份数据满足 h 是原问题的唯一最优解。答案对 998244353 取模。
输入格式
第一行输入两个正整数 n,m,表示矩阵大小。
接下来 n 行,第 i 行一个长度为 m 的字符串。设第 i 行第 j 个字符所表示的十进制整数为 x,其中 1≤x≤7。对于每个 y∈{0,1,2},y∈Si,j 当且仅当 x 的二进制表示中从低到高第 y 位为 1。
接下来 n 行描述矩阵 h,每行包含一个长度为 m 的 01 字符串。第 i 行第 j 个字符表示 hi,j。
输出格式
输出一行一个非负整数表示答案对 998244353 取模后的结果。保证取模前答案不为 0。
2 2
46
44
01
11
16
3 3
124
224
412
011
110
101
135
4 5
44646
75547
64745
75445
01101
10000
10101
00110
4064
8 8
66677655
77554747
73366765
21773775
73766676
73777775
77475565
56751776
11100100
10001010
11101110
10001010
01100111
10010010
10010010
01100111
46434700
提示
【样例 #1 解释】
矩阵 c 共有两种可能。
- 若 c1,2=1,则使 h 成为唯一最优解的 (a,b) 共有 12 种:
- a=[0,2],b=[0,0];
- a=[0,2],b=[0,1];
- a=[0,2],b=[0,2];
- a=[0,2],b=[1,0];
- a=[0,2],b=[1,1];
- a=[0,2],b=[1,2];
- a=[1,2],b=[0,0];
- a=[1,2],b=[0,1];
- a=[1,2],b=[0,2];
- a=[1,2],b=[1,0];
- a=[1,2],b=[1,1];
- a=[1,2],b=[1,2]。
- 若 c1,2=2,则使 h 成为唯一最优解的 (a,b) 共有 4 种:
- a=[0,2],b=[0,2];
- a=[0,2],b=[1,2];
- a=[1,2],b=[0,2];
- a=[1,2],b=[1,2]。
因此,满足条件的数据共有 12+4=16 份。
【数据范围】
对于所有测试数据,均有:
- 1≤n,m≤10;
- 对于所有 1≤i≤n,1≤j≤n,均有 Si,j⊆{0,1,2} 且 Si,j=∅。
- 对于所有 1≤i≤n,1≤j≤n,均有 hi,j∈{0,1}。