HDU 2159 FATE ,完全揹包

2021-07-10 15:59:31 字數 515 閱讀 8709

把忍耐值和殺怪數當成兩個揹包

dp[i][j]表示忍耐值為i,殺怪數為j時的經驗

dp[i][j]=max( dp[i][j], dp[i-b[i]][j-1]+a[i]);

顯然,它只是要求殺怪數不超過s,那麼dp[i][s],肯定是消耗忍耐值為i時,獲得的最大經驗了

所以從小到大列舉忍耐值m,當dp[i][s]>=n時,就break,保證了得出答案時m是較小的

#include 

#include

#include

#include

using

namespace

std;

int main()}}

if(dp[x][s]>=n) break;

}if(x>m) printf("-1\n");

else

printf("%d\n",m-x);

}return

0;}

HDU 2159 FATE 完全揹包

參考資料 題意 公升級還需n點經驗值,還有m點忍耐度,殺乙個怪會得到相應的經驗,並減掉相應的忍耐度。當忍耐度降到0或者0以下時,最多隻殺s只怪。能公升級,輸出最大剩餘耐久。不能公升級,輸出 1。完全揹包概述 有n種物品和乙個容量為v的揹包,每種物品都有無限件可用。第i種物品的體積是c,價值是w。求解...

HDU 2159(FATE) 完全揹包

最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的經驗,並減掉相應的忍耐度。當忍耐度降到0...

hdu 2159 FATE 多重揹包

二維費用的揹包問題是指 對於每件物品,具有兩種不同的費用 選擇這件物品必須同時付出這兩種代價 對於每種代價都有 乙個可付出的最大值 揹包容量 問怎樣選擇物品可以得到最大的價值。設這兩種代價分別為代價1和代價2,第i件物品所需的兩種代價分別為a i 和 b i 兩種代價可付出的最大值 兩種揹包容量 分...