No.2838 Diagonals
レベル :  / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
            : 512 MB / 標準ジャッジ問題
            
タグ : / 解いたユーザー数 64
作問者 : milkcoffee
            
            / テスター :
milkcoffee
            
            / テスター :
            
             suo
            
            👑
suo
            
            👑  ygussany
ygussany
            
            
        
        
        タグ : / 解いたユーザー数 64
作問者 :
 milkcoffee
            
            / テスター :
milkcoffee
            
            / テスター :
            
            問題文最終更新日: 2024-08-03 20:24:01
        
        
            コンテストの他の問題:
            
        
        
        問題文
$N$ 行 $M$ 列のグリッドがあります。 グリッドの $i$ 行目 $j$ 列目を $(i,j)$ と呼ぶことにします。
$S_{i,j}$ が # ならば $(i,j)$ にはマスがあり、. ならば $(i,j)$ にはマスがありません。
また、各マスは正方形であり、異なるマス同士の境界は直線で区切られています。
あなたは全てのマスそれぞれについて、以下の $4$ つのうちいずれか $1$ つの操作を選びます。
- マスの左上と右下を結ぶ対角線を $1$ 本書く。
- マスの左下と右上を結ぶ対角線を $1$ 本書く。
- 上記の $2$ つの対角線をどちらも書く。
- 対角線を書かない。
操作後のマスは下図のいずれかのようになります。
 
    
    
    マスの個数を $k$ 個として、グリッド全体に対する線の書き方は全部で $4^{k}$ 通りありますが、以下の条件を満たす線の書き方の数を $998244353$ で割ったあまりを求めて下さい。
- 【条件】線で囲われた図形それぞれを白または黒の $2$ 色で塗り、隣り合う(辺を共有する)図形と色が異なるように塗り分けることができる。
入力
$N$ $M$
$S_{1,1}S_{1,2}\ldots S_{1,M}$
$\vdots$
$S_{N,1}S_{N,2}\ldots S_{N,M}$
    
- $1 \leq N,M \leq 500$
- $N,M$ は整数
- $S_{i,j}$ は #または.
- #は $1$ つ以上存在する
出力
答えを整数で出力してください。
サンプル
サンプル1
入力
3 4 ###. .### .##.
出力
16384
入力で与えられるグリッドは左の図のようなマス目です。
例えば、中央の図のような対角線の書き方をすれば、右図のように白と黒で塗り分けることができるため、条件を満たします。
対角線の書き方は全部で $4^8 = 65536$ 通りですが、そのうち条件を満たすのは $16384$ 通りです。
 
        サンプル2
入力
3 3 #.# .#. #.#
出力
1024
マスはいずれも隣接しません。そのため、$4^5 = 1024$ 通りの全ての書き方が条件を満たします。
サンプル3
入力
10 30 ####.####..#######.######.#.#. ###.##.#.##.##.##.######.##..# .#.#.#.#..######.....#..##.##. ##.#..#.###.###..#.###.####### ##.##.#####.####.#..##.#..#### ..#####..###########.##.##.##. ######..#...#####..###..##..## .###..#.##..#..###..#####...## ###..###########.#..##.#...### #.##.#####.####.####.####.###.
出力
993502162
答えを $998244353$ で割ったあまりを求めてください。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。
