#ARC196B. Torus Loop

Torus Loop

Torus Loop

时间限制:2s
空间限制:1024MB

题目描述

有一个 HH 行 WW 列的网格,行、列均从 00 开始编号。每个格子放置一种可以自由旋转的线段砖块,砖块类型由仅含 A、B 的字符串 S0,S1,…,SH−1S_0,S_1,\ldots,S_{H-1} 指定:

  • A 型砖块上的线段连接两个相邻边的中点,共有 44 种旋转方式;
  • B 型砖块上的线段连接两个相对边的中点,共有 22 种旋转方式。

把网格的上下边、左右边分别首尾相接成环面。要求相邻格子公共边的中点要么同时是两块砖上线段的端点,要么同时都不是,从而所有线段均没有断头。求满足条件的砖块旋转方案数对 998244353998244353 取模的结果。共有 TT 组测试数据。

输入格式

T
H_1 W_1
S_{1,0}
\vdots
S_{1,H_1-1}
\vdots
H_T W_T
S_{T,0}
\vdots
S_{T,H_T-1}

输出格式

输出 TT 行,第 ii 行输出第 ii 组测试数据的答案。

样例输入 1

3
3 3
AAB
AAB
BBB
3 3
BBA
ABA
AAB
3 4
BAAB
BABA
BBAA

样例输出 1

2
0
2

数据范围

1≤T≤1051\le T\le 10^5,2≤H,W2\le H,W,单组 HW≤106HW\le 10^6,所有测试数据的 HWHW 之和不超过 10610^6。

子任务编号 分值 特殊限制
1 10 所有格子均为 A
2 所有格子均为 B
3 20 H,W≤4H,W\le 4
4 30 min⁡(H,W)=2\min(H,W)=2
5 无特殊限制