I - Yet Another Grid Task Editorial
by
kyopro_friends
元の問題は、あるマスを黒く塗った時その「下と右下」を黒く塗るというものでしたが、これを「下と右」に変えた問題を考えてみます。
変更後の問題は
\(dp[i][j]=\) \(i\) 行目まで塗り方を決めて、美しいグリッドであり、マス \((i,j)\) を白く、マス \((i,j+1)\) を黒く塗るようなものの個数
として、
\(dp[i][j]=\sum_{k\geq j} dp[i-1][k]\)
のようなDPにより解くことができます。これは累積和をとりながらDPすることで \(O(NM)\) で求めることができます。
元の問題もほとんど同様に解くことができます。
与えられたグリッドを、左上角を下に押し込むように、次のように斜めに変形します
#...# ..... ..... ..... #.... ↓ # .. ... .... #.... .... ... .. #
こうすると「下と右下」という条件は「下と右」という条件になるため、先に述べた問題と全く同じようにして解くことができます。
posted:
last update: