MathLabs

Bài 4

Trong một thị trấn n nhân n, các ngôi nhà được đánh số (i,j), với (1,1) ở góc trên trái. Ban đầu nhà (1,c) cháy, trong đó c không vượt quá n/2. Mỗi khoảng thời gian đơn vị, lính cứu hỏa bảo vệ một nhà chưa cháy, rồi lửa lan tới mọi nhà chưa được bảo vệ kề với các nhà đang cháy ở đầu khoảng. Nhà đã bảo vệ vẫn được bảo vệ. Hỏi nhiều nhất có thể cứu được bao nhiêu nhà? Hai nhà kề nhau khi đúng một tọa độ khác nhau 1.
Bước 3 trên 6: Phân mức các ngôi nhà theo khoảng cách lửa
ℓ(i,j)=∣i−1∣+∣j−c∣\ell(i,j)=|i-1|+|j-c|
Phân tích chi tiết

Gọi nhà ở mức t nếu khoảng cách Manhattan từ (1,c) tới nhà đó là t. Gọi d(t) là số nhà mức t được bảo vệ không muộn hơn thời điểm t, p(t) là số nhà ở mức lớn hơn t được bảo vệ không muộn hơn t, và s(t) là số nhà mức t chưa cháy ở thời điểm t. Vì mỗi thời điểm chỉ bảo vệ một nhà, p(t)+d(t) không vượt quá t và p(t+1)+d(t+1) không vượt quá p(t)+1.