atcoder#ARC157C. [ARC157C] YY Square

[ARC157C] YY Square

配点 : 600600

問題文

HHWW 列のマス目の各マスに X, Y のいずれかの文字が書かれています. 上から ii 行目,左から jj 列目のマスを (i,j)(i, j) で表します. マス目に書かれている文字は HH 個の文字列 S1,S2,,SHS_1, S_2, \dots, S_H によって与えられ,SiS_ijj 文字目がマス (i,j)(i, j) に書かれた文字を表します.

下または右に隣接するマスへの移動を繰り返してマス (1,1)(1, 1) からマス (H,W)(H, W) に至る経路 PP に対して,

  • PP で通るマスに書かれた文字を順に並べて得られる長さ (H+W1)(H + W - 1) の文字列」を str(P)\mathrm{str}(P) とし,
  • str(P)\mathrm{str}(P) 中で Y 同士が隣り合う箇所の個数の 2 乗」を PPスコアと定義します.

そのような経路 PP としてあり得るものは (H+W2H1)\displaystyle\binom{H + W - 2}{H - 1} 通りありますが,その全てに対するスコアの総和を 998244353998244353 で割った余りを求めてください.

$\binom{N}{K}$ の意味 \displaystyle\binom{N}{K}$$$$N$$$$K

制約

  • 1H20001 \leq H \leq 2000
  • 1W20001 \leq W \leq 2000
  • Si (1iH)S_i \ (1 \leq i \leq H)X, Y からなる長さ WW の文字列である.

入力

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

HH WW

S1S_1

S2S_2

\vdots

SHS_H

出力

あり得る経路全てに対するスコアの総和を 998244353998244353 で割った余りを出力せよ.

2 2
YY
XY
4

経路 PP としてあり得るものは (1,1)(1,2)(2,2)(1, 1) \to (1, 2) \to (2, 2)(1,1)(2,1)(2,2)(1, 1) \to (2, 1) \to (2, 2)22 通りです.

  • (1,1)(1,2)(2,2)(1, 1) \to (1, 2) \to (2, 2) の場合,str(P)=\mathrm{str}(P) = {}YYY であり,1,21, 2 文字目と 2,32, 3 文字目の 22 箇所で Y 同士が隣り合っているので,スコアは 22=42^2 = 4 です.
  • (1,1)(2,1)(2,2)(1, 1) \to (2, 1) \to (2, 2) の場合,str(P)=\mathrm{str}(P) = {}YXY であり,Y 同士が隣り合う箇所は無いので,スコアは 02=00^2 = 0 です.

したがって,求める総和は 4+0=44 + 0 = 4 となります.

2 2
XY
YY
2

22 通りのいずれの経路の場合も str(P)=\mathrm{str}(P) = {}XYY であり,スコアは 12=11^2 = 1 です.

10 20
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYY
423787835

スコアの総和を 998244353998244353 で割った余りを出力してください.