AOJ 2965 - F グリッドの番号
解法
小さい順に数字を当てはめていくとき、上段の右端に配置するか、下段の右端に配置するかの二択になることを利用します。
番目までの数字を入れ終えて、上段に配置した個数が
個かつ、直近
手の上下の配置情報が
のときの配置の通り数
とします。
配るDPを考えると、
を配る箇所は、
を上段の左から
番目に配置した場合と、下段の
番目に配置した場合の2か所です。
それぞれのパターンについて、配置したときに矛盾がないかを確認し、問題が無ければ値を配れば良いです。
矛盾がないかを確認するには、をもとに状態を復元します。
上段に配置する場合は、上段の番目の数をチェックして
との差が
以下か、
下段に配置する場合は、上段の番目の数と下段の
番目の数をチェックして、
との差が
以下かチェックすればよいです。