#L3896. 「NOIP2022」种花

「NOIP2022」种花

题目描述

小 C 决定在他的花园里种出 CCF 字样的图案,因此他想知道 C 和 F 两个字母各自有多少种种花的方法;不幸的是,花园中有一些土坑,这些位置无法种花,因此他希望你能帮助他解决这个问题。

花园可以看作有 n×mn \times m 个位置的网格图,从上到下分别为第 11 到第 nn 行,从左到右分别为第 11 列到第 mm 列,其中每个位置有可能是土坑,也有可能不是,可以用 ai,j=1a_{i,j} = 1 表示第 ii 行第 jj 列这个位置有土坑,否则用 ai,j=0a_{i,j} = 0 表示这个位置没土坑。

一种种花方案被称为 C-形 的,如果存在 x1,x2[1,n]x_1, x_2 \in [1, n],以及 y0,y1,y2[1,m]y_0, y_1, y_2 \in [1, m],满足 x1+1<x2x_1 + 1 < x_2,并且 y0<y1,y2my_0 < y_1, y_2 \leq m,使得第 x1x_1 行的第 y0y_0 到第 y1y_1 列、第 x2x_2 行的第 y0y_0 到第 y1y_1 列以及第 y0y_0 列的第 x1x_1 到第 x2x_2 行都不为土坑,且只在上述这些位置上种花。

一种种花方案被称为 F-形 的,如果存在 x1,x2,x3[1,n]x_1, x_2, x_3 \in [1, n],以及 y0,y1,y2[1,m]y_0, y_1, y_2 \in [1, m],满足 x1+1<x2<x3x_1 + 1 < x_2 < x_3,并且 y0<y1,y2my_0 < y_1, y_2 \leq m,使得第 x1x_1 行的第 y0y_0 到第 y1y_1 列、第 x2x_2 行的第 y0y_0 到第 y1y_1 列以及第 y0y_0 列的第 x1x_1 到第 x2x_2 行都不为土坑,且只在上述这些位置上种花。

现在小 C 想知道,给定 n,mn, m 以及表示每个位置是否为土坑的值 {ai,j}\{a_{i,j}\},C-形和 F-形种花方案分别有多少种可能?由于答案可能非常之大,你只需要输出其对 998244353998244353 取模的结果即可。

输入格式

从文件 plant.in 中读入数据。

第一行包含两个整数 T,idT, id,分别表示数据组数和测试点编号。如果数据为样例则保证 id=0id = 0

接下来一共 TT 组数据,在每组数据中:

第一行包含四个整数 n,m,c,fn, m, c, f,其中 n,mn, m 分别表示花园的行数、列数,对于 c,fc, f 的含义见输出格式部分。

接下来 nn 行,每行包含一个长度为 mm 且仅包含 01 的字符串,其中第 ii 个串的第 jj 个字符表示 ai,ja_{i,j},即花园里的第 ii 行第 jj 列是不是一个土坑。

输出格式

输出到文件 plant.out 中。

设花园中 C-形和 F-形的种花方案分别有 VCV_CVFV_F 种,则你需要对每一组数据输出一行用一个空格隔开的两个非负整数,分别表示 (c×VC)mod998244353(c \times V_C) \bmod 998244353(f×VF)mod998244353(f \times V_F) \bmod 998244353

1 0
4 3 1 1
001
010
000
000
4 2
1 0
6 6 1 1
000010
011000
000110
010000
011000
000000

36 18

数据规模与约定

对于所有数据,保证 T5T \le 5n1000n \le 1000m1000m \le 1000,且 0c,f10 \le c, f \le 1