問題概要

問題へのリンク

1辺の長さが1の正方形である2種類のタイルがある.

  • 種類A:
  • 種類B:

高さ $H$,幅 $W$ のグリッドに,このタイルが敷き詰められている. (A, B からなる長さ $W$ の文字列が $H$ 個与えられる)

各タイルは回転可能. グリッドをトーラスとしてみたときに,線分が行き止まりにならずつながるように配置する方法の数を mod 998244353 で求めよ.

制約

$2 \leq H$,$2 \leq W$,$HW \leq 10^6$

公式解説へのリンク

略解.click to open

正しく敷き詰められているとする. $p[i, j]$ を,セル $(i, j)$ の左側の縦の線分の中点を線が通るかどうか (true/false) $q[i, j]$ を,セル $(i, j)$ の上側の横の線分の中点を線が通るかどうか (true/false) とする. トーラスになるように同一視する.

$i$を固定し,横一列に $p[i, j]$ ($j = 0, 1, \ldots, W)$ を考えると,

  • セル $(i, j)$ が A なら,$p[i, j] = \neg p[i, j + 1]$
  • セル $(i, j)$ が B なら,$p[i, j] = p[i, j + 1]$

だから,A の横の個数は偶数でなければならない.縦も同様.

次に,$(i, j)$ に B が置かれているとする.

  • $(i, 0)$ から $(i, j - 1)$ までの A の数の偶奇によって,$p[i, 0] \texttt{ XOR } p[i, j)$ の true/false が決まる.
  • $(0, j)$ から $(i - 1, j)$ までの A の数の偶奇によって,$q[0, j] \texttt{ XOR } q[i, j)$ の true/false が決まる.
  • 当然,$p[i, j] \texttt{ XOR } q[i, j] = \texttt{false}$ である.

であるから,

  • $(i, j)$ に B が置かれていると,$p[i, 0] \texttt{ XOR } p[0, j]$ の true/false は決まっている. これを $r(i, j)$ とする.

そこで,$\{(i, 0) \mid i = 0, \dots, H - 1\} \cup \{(0, j) \mid j = 0, \dots, W - 1\}$ を頂点とする二部グラフを, B が置かれている $(i, j)$ に対して $(i, 0)$ と $(0, j)$ を,重み $r(i, j)$ で結ぶように作る. 全頂点に矛盾無くポテンシャルが定義できなければならない. 逆に,全頂点にポテンシャルが定義できれば,それにしたがって すべての $p[i, j], q[i, j]$ が定義できる.

したがって,求める答は,上の二部グラフの連結成分数を $S$ として,$2^S$ である.