題目:
怪物有無限個,將完全揹包加一維,除了忍耐度(容量)限制,還有總數限制
物品總個數的限制
有時,「二維費用」的條件是以這樣一種隱含的方式給出的:最多只能取m件物品。這事實上相當於每件物品多了一種「件數」的費用,每個物品的件數費用均為1,可以付出的最大件數費用為m。換句話說,設f[v][m]表示付出費用v、最多選m件時可得到的最大價值,則根據物品的型別(01、完全、多重)用不同的方法迴圈更新,最後在f[0..v][0..m]範圍內尋找答案。
dp[j][t]表示忍耐度為j,殺了t個時的最大經驗。
方程:dp[j][t]=max(dp[j][t],dp[j-w][t-1]+c)
#includeusing namespace std;
const int inf=0x7ffffff;
int dp[105][105];
int main()
}if(ans==inf)
cout<<-1
cout<}
return 0;
}
HDU 2159 FATE 二維費用揹包
problem description 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的...
HDU2159FATE(二維費用揹包)
解題思路 第二題二維費用揹包了,有些許的理解,狀態設計 dp z j 表示殺z個怪花費不超過j的情況下得到的最大經驗值 狀態轉移方程 dp z j max dp z j dp z 1 j cost i value i 相當於多一維限定殺敵數的花費,而你要多殺乙個人一定是從你殺的z 1個人的狀態推導過...
HDU 2159 FATE 二維費用揹包
problem description 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的...