足跡-sokuseki-

りかの日進月歩の記録

ABC037 D 経路

D - 経路

問題概要

 H  W のマス目があり、それぞれのマスには整数  a_{i j} が書かれている。
このグリッドの中の好きなマスから開始し、今いるマスの上下左右に隣接しているマスのうち、今いるマスより大きな整数が書かれたマスに移動することができる(移動しなくてもよい)。
ありうる移動経路の個数を  10^9 + 7 で割った余りを求めよ。


制約
 0 \le H , W \le 1000
 1 \le a_{i j} \le 10^9

解法

dp[  i ][  j ] := マス  ( i, j ) で動くのを終了する場合の移動経路の個数

として、  a_{i j} が大きい順に dp[  i ][  j ] を計算していく。
dpテーブルは全て1で初期化しておき、dpテーブルの更新は、マス  ( i, j ) の4近傍のマス  ( x, y ) に対して、

dp[  i ][  j ]  += dp[  x ][  y ];

をする。

すべてのマス  ( i, j ) に対してdp[  i ][  j ] の総和が答えとなる。


Submission #2119231 - AtCoder Beginner Contest 037