MathLabs

第4問

n×n の町の家を (i,j) で番号付けし、(1,1) を左上とする。時刻0に (1,c) が燃え、c≤n/2 とする。各単位時間に消防士はまだ燃えていない家を1軒守り、その後、区間開始時に燃えていた各家から、守られていない隣接家へ火が広がる。守った家は常に守られる。救える家の最大数を求めよ。隣接とは、一方の座標だけが1異なることをいう。
ステップ 3/6: 火からのレベルに分ける
ℓ(i,j)=∣i−1∣+∣j−c∣\ell(i,j)=|i-1|+|j-c|
詳しい解説

(1,c) からのマンハッタン距離が t の家をレベル t と呼ぶ。d(t) を時刻 t までに守られたレベル t の家の数、p(t) を時刻 t までに守られたレベル t より上の家の数、s(t) を時刻 t に燃えていないレベル t の家の数とする。毎時1軒なので p(t)+d(t)≤t、p(t+1)+d(t+1)≤p(t)+1 である。