問題一覧 > 通常問題

No.3071 Double Speedrun

レベル : / 実行時間制限 : 1ケース 6.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 55
作問者 : 👑 AngrySadEight / テスター : 👑 seekworser hamamu
1 ProblemId : 11903 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-02-08 01:52:06

問題文

$H$ 行 $W$ 列のマス目があります.マス目の状態は $H$ 個の長さ $W$ の文字列 $S_1, S_2, \dots, S_H$ で表され,$S_i$ の $j$ 文字目が # であれば壁が置かれていることを,. であれば置かれていないことを表します.なお,$S_{i,j}$ で $S_i$ の $j$ 文字目を表します.

Alice と Bob は,マス $(1, 1)$ からスタートし,次の $2$ 種類の移動のどちらかを繰り返すことにより,ゴールであるマス $(H, W)$ を目指します.

  • マス $(i, j)$ からマス $(i + 1, j)$ へ移動する.この移動は,マス $(i + 1, j)$ が存在し,かつ壁が置かれていない場合にのみ行える.
  • マス $(i, j)$ からマス $(i, j + 1)$ へ移動する.この移動は,マス $(i, j + 1)$ が存在し,かつ壁が置かれていない場合にのみ行える.

なお,Alice は最初必ずマス $(1, 1)$ からマス $(2, 1)$ への移動を行い,Bob は最初必ずマス $(1, 1)$ からマス $(1, 2)$ への移動を行います

スムーズに移動を行いたい $2$ 人は,マス $(1, 1)$ とマス $(H, W)$ 以外のマスに対して,$2$ 人ともが通ったマスが存在しないようにしたいです.

そのような $2$ 人の移動方法の総数を $998244353$ で割った余りを求めてください.

なお,$2$ つの移動方法は,あるマスが存在し,一方では Alice または Bob のどちらかが通ったが,もう一方では通らなかった場合に区別されます.

制約

  • $H, W$ は整数
  • $2 \leq H, W \leq 400$
  • $S_i$ は # または . からなる長さ $W$ の文字列
  • $S_{1, 1}, S_{1, 2}, S_{2, 1}, S_{H, W}$ は全て .

入力

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

$H$ $W$
$S_1$
$S_2$
$\vdots$
$S_H$

出力

$2$ 人の移動方法の数を $998244353$ で割った余りを出力せよ.

サンプル

サンプル1
入力
4 4
....
.#..
....
#...
出力
5

例えば,次の移動方法は条件を満たします.

  • Alice が $(1, 1) \rightarrow (2, 1) \rightarrow (3, 1) \rightarrow (3, 2) \rightarrow (4, 2) \rightarrow (4, 3) \rightarrow (4, 4)$ の順に移動する.
  • Bob が $(1, 1) \rightarrow (1, 2) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3) \rightarrow (3, 4) \rightarrow (4, 4)$ の順に移動する.

この移動方法は,Alice と Bob の両方が通ったマスがマス $(1, 1)$ およびマス $(4, 4)$ 以外に存在しないため条件を満たします.

そのような移動方法はこれ以外にも $4$ 通りあり,計 $5$ 通りの移動方法があります.

サンプル2
入力
3 3
..#
...
#..
出力
0

条件を満たす移動方法は存在しません.

サンプル3
入力
12 12
............
............
............
............
............
....#..#....
....#..#....
............
............
............
............
............
出力
188685391

$998244353$ で割った余りを出力してください.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。