AtCoder Regular Contest 196 (Div. 1)
B
Torus Loop
AtCoder
⌀ 2188
原题
← AC →
翻译中…

Problem Statement

翻译中…

There is a grid of $H$ rows and $W$ columns. The rows are numbered $0,1,\ldots,H-1$ from top to bottom, and the columns are numbered $0,1,\ldots,W-1$ from left to right. Let $(i,j)$ denote the cell at row $i$ and column $j$.

翻译中…

You are given $H$ strings $S_0, S_1, \ldots, S_{H-1}$, each of which is of length $W$ and consists of A and B.

翻译中…

In each cell, one of the following two types of tiles is placed. Let $S_{ij}$ denote the $(j+1)$-th character $(0 \le j \le W-1)$ of the string $S_i$. The type of tile placed in cell $(i,j)$ is $S_{ij}$.

翻译中…
  • Type A: A single line segment is drawn on the tile’s surface, connecting the midpoints of two adjacent edges.
翻译中…

image

翻译中…
  • Type B: A single line segment is drawn on the tile’s surface, connecting the midpoints of two opposite edges.
翻译中…

image

翻译中…

These tiles can be freely rotated. When focusing only on the pattern formed by the line segments, there are four ways to rotate a Type-A tile and two ways to rotate a Type-B tile. Therefore, if we distinguish placements only by the pattern of line segments, the number of ways to place the tiles is $4^a \times 2^b$, where $a$ is the number of Type-A tiles and $b$ is the number of Type-B tiles.

翻译中…

Among these ways, print the number, modulo $998244353$, of ways such that the line segments on the tiles have no dead ends when viewing the grid as a torus.

翻译中…

Here, "the line segments on the tiles have no dead ends when viewing the grid as a torus" if and only if the following two conditions are satisfied for every cell $(i,j)$:

翻译中…
  • Both of the following exist, or neither of the following exists:
  • the line segment drawn in the cell $(i,j)$, whose endpoint is the midpoint of the right edge of the cell $(i,j)$
    • the line segment drawn in the cell $(i,(j+1)\bmod W)$, whose endpoint is the midpoint of the left edge of the cell $(i,(j+1)\bmod W)$
  • Both of the following exist, or neither of the following exists:
  • the line segment drawn in the cell $(i,j)$, whose endpoint is the midpoint of the bottom edge of the cell $(i,j)$
    • the line segment drawn in the cell $((i+1)\bmod H,j)$, whose endpoint is the midpoint of the top edge of the cell $((i+1)\bmod H,j)$
翻译中…

For example, the following placement satisfies the condition:

翻译中…

image

翻译中…

The following placement does not satisfy the condition. Specifically, while there is no line segment whose endpoint is the midpoint of the right edge of the tile in cell $(0,2)$, there is a line segment whose endpoint is the midpoint of the left edge of the tile in cell $(0,0)$, so the condition is not satisfied.

翻译中…

image

翻译中…

You are given $T$ test cases; solve each of them.

翻译中…

Constraints

翻译中…
  • $1 \le T \le 10^5$
  • $2 \le H,W$
  • $HW\leq 10^6$
  • $S_i\,(0\le i\le H-1)$ are length-$W$ strings consisting of A and B.
  • The sum of $H W$ over all test cases is at most $10^6$.
  • $T$, $H$, and $W$ are integers.
翻译中…

Input

翻译中…

The input is given from Standard Input in the following format:

翻译中…

T
case_1
case_2
\vdots
case_T

翻译中…

Each case is given in the following format:

翻译中…

H W
S_0
S_1
\vdots
S_{H-1}

翻译中…

Output

翻译中…

For each test case, print the number, modulo $998244353$, of placements that satisfies the condition, in separate lines.

翻译中…

样例

Input #1
3
3 3
AAB
AAB
BBB
3 3
BBA
ABA
AAB
3 4
BAAB
BABA
BBAA
Output #1
2
0
2
One valid placement for the first test case is shown in the following image: ![image](https://img.atcoder.jp/arc196/sample.png)
题目信息
题号
arc196_b
时间限制
2 s
内存限制
1024 MB

题面与样例版权归 AtCoder 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。