2381: 种花
题目描述
小 C 决定在他的花园里种出CCF字样的图案,因此他想知道C和F两个字母各自有多少种种花的方案;不幸的是,花园中有一些土坑,这些位置无法种花,因此他希望你能帮助他解决这个问题。
花园可以看作有n×m个位置的网格图,从上到下分别为第1到第n行,从左到右分别为第1列到第m列,其中每个位置有可能是土坑,也有可能不是,可以用ai,j=1 表示第i行第j列这个位置有土坑,否则用ai,j=0表示这个位置没土坑。
一种种花方案被称为C-形的,如果存在x1,x2∈[1,n],以及y0,y1,y2∈[1,m],满足x1+1<x2并且y0<y1,y2≤m,使得第x1行的第y0到第y1列、第x2行的第y0到第y2列以及第y0列的第x1到第x2行都不为土坑,且只在上述这些位置上种花。
一种种花方案被称为F- 形的,如果存在x1,x2,x3∈[1,n],以及y0,y1,y2∈[1,m],满足x1+1<x2<x3,并且 y0<y1,y2≤m,使得第x1行的第y0到第y1列、第x2行的第y0到第y2列以及第y0列的第x1到第x3行都不为土坑,且只在上述这些位置上种花。
样例一解释中给出了C-形和F-形种花方案的图案示例。
现在小 C 想知道,给定n,m 以及表示每个位置是否为土坑的值{ai,j},C-形和F-形种花方案分别有多少种可能?由于答案可能非常之大,你只需要输出其对998244353取模的结果即可,具体输出结果请看输出格式部分。
输入
第一行包含两个整数T,id,分别表示数据组数和测试点编号。如果数据为样例则保证id=0。
接下来一共T组数据,在每组数据中:
第一行包含四个整数n,m,c,f,其中n,m 分别表示花园的行数、列数,对于c,f 的含义见输出格式部分。
接下来n行,每行包含一个长度为m且仅包含0和1的字符串,其中第i 个串的第j 个字符表示ai,j,即花园里的第i 行第j 列是不是一个土坑。
输出
样例输入 复制
1 0
4 3 1 1
001
010
000
000
样例输出 复制
4 2
提示
【样例 1 解释】
四个 \texttt{C-}C- 形种花方案为:
**1 **1 **1 **1 *10 *10 *10 *10 **0 *** *00 *00 000 000 **0 ***
其中*表示在这个位置种花。注意C的两横可以不一样长。
类似的,两个F-形种花方案为:
**1 **1 *10 *10 **0 *** *00 *00