atcoder#ARC120B. [ARC120B] Uniformly Distributed

[ARC120B] Uniformly Distributed

配点 : 400400

問題文

HHWW 列のマス目があります。上から ii 行目、左から jj 列目のマスをマス (i,j)(i, j) と呼ぶことにします。 マス目の状態を表す HH 個の文字列 S1,S2,S3,,SHS_1, S_2, S_3, \dots, S_H が与えられます。マス (i,j)(i, j) の状態は以下の通りです。

  • SiS_ijj 文字目が R ならば赤く塗られている
  • SiS_ijj 文字目が B ならば青く塗られている
  • SiS_ijj 文字目が . ならば色が塗られていない

色が塗られていないマスの個数を kk とすると、そのようなマスそれぞれを赤と青のどちらかで塗る方法は 2k2^k 通りありますが、このうち以下の条件を満たすものの個数を求めてください。

  • マス (1,1)(1, 1) からマス (H,W)(H, W) に、右または下へ 11 マス移動することを繰り返して辿り着くとき、途中で通過するマス (マス (1,1),(H,W)(1, 1), (H, W) を含む) のうち赤に塗られたものの数が、通る経路によらず一定である

ただし、答えは非常に大きくなることがあるので、998244353998244353 で割った余りを出力してください。

制約

  • 2H5002 \le H \le 500
  • 2W5002 \le W \le 500
  • SiS_iR, B, . からなる長さ WW の文字列

入力

入力は以下の形式で標準入力から与えられる。

HH WW

S1S_1

S2S_2

S3S_3

\hspace{3pt} \vdots

SHS_H

出力

答えを 998244353998244353 で割った余りを出力せよ。

2 2
B.
.R
2

マス (1,1)(1, 1) からマス (2,2)(2, 2) に、右または下へ 11 マス移動することを繰り返して辿り着く方法は以下の 22 通りあります。

  • マス (1,1)(1,2)(2,2)(1, 1) \rightarrow (1, 2) \rightarrow (2, 2)
  • マス (1,1)(2,1)(2,2)(1, 1) \rightarrow (2, 1) \rightarrow (2, 2)

マス (1,2)(1, 2) とマス (2,1)(2, 1) を異なる色で塗った場合、上記の 22 通りの移動方法のどちらを選ぶかによって、通過する赤く塗られたマスの数が変わってしまうため条件を満たしません。 一方で、マス (1,2)(1, 2) とマス (2,1)(2, 1) を同じ色で塗った場合、通過する赤く塗られたマスの数は移動方法によって変わらないため、条件を満たします。 よって条件を満たす塗り方は 22 通りあります。

3 3
R.R
BBR
...
0

条件を満たす塗り方が存在しないかもしれません。

2 2
BB
BB
1

色が塗られていないマスが存在せず、現在のマス目は条件を満たすため、答えは 11 となります。