看板 Prob_Solve 關於我們 聯絡資訊
如題,這兩題的題目敘述和要求都是相同的,但特別之處在於物品的重量和背包負重都是2 的次方項,要求和01背包問題一樣問價值總和最大化。 想問一下解題方向或是想法,自己google了一下沒看到有題解也不知道怎麼下關鍵字和01背 包做區隔,先謝謝各位大大的回覆。 因為輸入的物品數量高達1e6個,而且重量和2的次方項有關,就異想天開想說會不會和 Huffman-Code 的編碼方式有關,所以寫了一個初版本,通過51%測資而已。 以下是我的程式碼:https://www.codepile.net/pile/A71bYyDz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.208.164 ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1551198940.A.FA1.html ※ 編輯: fatcat8127 (36.226.99.91), 02/27/2019 04:20:18 fatcat8127:轉錄至看板 C_and_CPP 02/27 05:14
oToToT: 對於重量2^k時,我們把價值最大的兩個合在一起湊出重量2^{ 02/27 19:52
oToToT: k+1}的物品,一直做到重量2^k的剩下一個或零個。如果剩一 02/27 19:52
oToToT: 個我們再考慮加入一個重量2^k價值為0的物品,讓剩的那個也 02/27 19:52
oToToT: 可以合上去,這樣直接看重量2^M中,價值最大的那個物品就 02/27 19:52
oToToT: 好。因為可以證明在每個重量最多加入一個價值為0的東西時 02/27 19:52
oToToT: ,用最優解選完選到一些價值為0的東西並不會影響答案 02/27 19:52
oToToT: 一份有點慢的AC code https://goo.gl/fBCRZC 02/27 20:34
fatcat8127: 感謝大大的說明和程式碼 02/28 01:52
fatcat8127: 根據我自己的理解和今天討論區的回覆,解法就是建立B 02/28 03:57
fatcat8127: inominal Heap的過程嗎 02/28 03:57