example:sicily 1346 「開心的金明」
(1)大牛的思路分析:揹包問題,只是主件繫結了一些附件,可以轉化成分組揹包,乙個主件及其附件代表一組。
但是「分組揹包」中一組地物品互斥,所以這裡要做一次轉化:將這個集合作為一組, 這裡要慶幸最多兩個附件。
解:
for (i=1;i<=m;i++)
else }}
}
(2)小菜的思路:典型的分組揹包,要三層迴圈,第三層是組內遍歷,由於組內最多取乙個,迴圈本身就保證了問題的正確性(組內不重複取);但是這個問題,我們不知道組內要取多少件,這是乙個「01揹包」問題,所以可以先針對「各附件集合」做一次01揹包。然後再分組揹包;實際上,分組時我們要解決的問題就是,對於乙個容量j,組i內應該取多少個——f[i][j],找到它,再做分組揹包。
解:只考慮乙個組,先在組內找最優解:f[i][j],這是乙個特殊的01揹包:取附件的話必須取主件。注意,f並不是最終的最優解,而是各組的最優解。
所以,如何解決這個特殊的"01不揹包"?
開心的金明(01揹包)
演算法訓練 開心的金明 時間限制 1.0s 記憶體限制 256.0mb 問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎 麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想...
揹包模型 開心的金明
金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5...
開心的金明(01揹包)
題目描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n 元。於是,他把每件物品規定了乙個...