完全揹包 HDU 1248 寒冰王座

2021-07-03 20:08:04 字數 866 閱讀 4869

有n中物品和乙個容量為v的揹包,每種物品都有無限件可用,放入第i中物品所佔的空間是ci,價值是wi,求解將哪些物品放入揹包中可使這些物品的耗費空間總和不超過揹包的容量,且價值總和最大。

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

for(v=ci;v<=v;v++)

f[v]=max(f[v],f[v-ci]+wi);

在01揹包中讓v遞減迴圈為了保證第i次迴圈中的狀態f[i,v]是由狀態f[i-1,v-ci]遞推而來,換句話說是為了保證每件物品只選一次。保證在考慮選入第i件物品這件策略是,依據的是乙個絕無已經選入第i件物品的子結果f[i-1,v-ci]。而完全揹包的特點是每種物品可選無限次,所以在考慮加選一件第i種物品時,正需要乙個可能已選入第i種物品的子結果f[i,v-ci],所以必須採用v遞增的順序迴圈。

採用二維陣列表示即為:

f[i][v]=max(f[i-1][v],f[i][v-ci]+wi);

例題  hdu——1248 寒冰王座

HDU1248 寒冰王座 完全揹包

problem description 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙...

HDU 1248 寒冰王座(完全揹包)

問題描述 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.死亡騎士 好的,給我乙個血...

HDU 1248 寒冰王座 完全揹包

description 不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張鈔票 為了防止自己在戰鬥中頻繁的死掉,他決定給自己買一些道具,於是他來到了地精商店前.死亡騎士 我要買道具 地精商人 我們這裡有三種道具,血瓶150塊乙個,魔法藥200塊乙個,無敵藥水350塊乙個.死亡騎士 好...