HDU 3449Consumer(依賴揹包問題)

2022-05-22 19:03:09 字數 742 閱讀 7852

題目大意:有很多個箱子和一些物品,想買箱子中的物品必須先買下箱子,求在規定的錢數里最多能買多大價值的東西

sample input

3 800

300 2 30 50 25 80

600 1 50 130

400 3 40 70 30 40 35 60

sample output

210
emmm,沒什麼好說的,就是板子套一套完事了。依賴揹包分為主件和附件,解決這類問題就是對每個主件從dp陣列中copy乙個tmp陣列,然後讓這個主件中的附件對tmp陣列做01揹包,之後對每個值加上主件的體積和價值求乙個max就ok了

以下是ac**:

#include #include 

#include

using

namespace

std;

const

int mac=1e5+10

;int

dp[mac],f[mac];

int poj[55][20],s[55],bag[55],val[55][20

];int

main()

for (int i=1; i<=n; i++)

printf(

"%d\n

",dp[w]);

}return0;

}

HDU 3449 依賴揹包

這道題雖然水水的,但是還是成功地給我增加了10多個wa。最開始拿著題,一看,依賴揹包嘛 直接dfs樹形dp嗨起來,甚至連記憶體都沒有算一下,3mle 然後又仔細看了一下題,沒有必要用樹形揹包來做嘛,對每個揹包01,就可以得到每個揹包的泛化物品。結果又沒有注意 把它們泛化物品的和寫成了完全揹包 囧 w...

hdu3449 有依賴的揹包問題

典型的有依賴的揹包,每個箱子是 主件 每個箱子所對應的物品是他的 附件 有依賴的揹包的過程就是把沒一組主件和附件的集合中附件跑一遍01揹包,然後把主件強加到跑完後的陣列裡,然後再在雖有的集合中選擇最優的dp i 的值,這樣更新到最後就行了,這樣更新 跑附件之間的01揹包後強加主件是對應著題意的必須有...

hdu3449 有依賴的揹包問題

典型的有依賴的揹包,每個箱子是 主件 每個箱子所對應的物品是他的 附件 有依賴的揹包的過程就是把沒一組主件和附件的集合中附件跑一遍01揹包,然後把主件強加到跑完後的陣列裡,然後再在雖有的集合中選擇最優的dp i 的值,這樣更新到最後就行了,這樣更新 跑附件之間的01揹包後強加主件是對應著題意的必須有...