#46055: dp開[100000][100000]執行起來連電腦都會卡 只好罵罵咧咧的尋找公式解


Eric7654321 (Dr. Kiwi)

學校 : 臺北市立建國高級中學
編號 : 80917
來源 : [140.113.122.19]
最後登入時間 :
2025-05-14 21:47:22
i859. 10642 - Can You Solve It? -- UVA | From: [140.113.122.19] | 發表日期 : 2025-05-14 14:17

這張圖其實是將座標 (x, y) 依照 斜對角順序編號:

(0, 0) → 0
(0, 1) → 1
(1, 0) → 2
(0, 2) → 3
(1, 1) → 4
(2, 0) → 5
(0, 3) → 6
(1, 2) → 7
(2, 1) → 8
(3, 0) → 9
...

你可以發現:

  • 每一條「斜線」上滿足 x + y = k

  • 每一條斜線起始編號為:start(k) = k*(k+1)/2

所以對於某個 (x, y),它的編號就是:

index(x, y) = (x + y) * (x + y + 1) / 2 + x

這是一個著名的座標壓縮技巧,稱為 Cantor pairing function 的變形。

驚不驚喜意不意外? 現在把你的破dp丟掉 直接用這個公式 遞迴什麼的都謝謝再連絡

 
ZeroJudge Forum