hdu 2159 FATE (二維揹包)

2021-06-17 18:09:47 字數 479 閱讀 5428

解題報告:二維揹包的問題,如果沒有看過的話,建議去看看揹包9講中的第五個問題。

本題中有每殺乙個怪,會獲得一定的經驗,同時減少一定的忍耐度,我用二維陣列dp來存放每次獲得的經驗值,b[i]為每次消耗的忍耐

所以可以的到遞推關係式:dp[i][j] = max(dp[i-b[i]][j-1],dp[i][j]);

資料有點多,不要搞混了~~

code:

#include#include#includeusing namespace std;

int dp[105][105],a[105],b[105];

int n,m,k,s,temp,flag;

int main()

} if(flag==1) printf("%d\n",temp);

if(flag==0) printf("-1\n");

} return 0;

}

hdu 2159 FATE 二維揹包

先求出不超過他的忍耐度殺完s只怪時能夠得到的經驗值,如果能公升完最後一級,再求用去多少忍耐度就能夠公升級,最後用他的忍耐度減去需要消耗的忍耐度即可 忍耐度當做體積,經驗值當做價值,怪的隻數當做物品數量 狀態轉移方程 f i j max i表示忍耐度,j表示殺怪數 忍耐度當做體積,經驗值當做價值,怪的...

HDU 2159 FATE 二維揹包

這題是乙個二維揹包的題目,剛開始並沒有那樣去做,只開了一維的空間來儲存狀態,結果很多的資料都沒有跑過去。其實這題這樣來問的話可能就明了很多了,求在指定的容忍值和指定的殺怪數下,求最大能夠得到了經驗數,可能我們馬上就能想到二維揹包,一維為殺怪數,二維為容忍值,在做乙個完全揹包,可惜這題問的是在滿足公升...

HDU 2159 FATE 二維揹包

這題是乙個二維揹包的題目,剛開始並沒有那樣去做,只開了一維的空間來儲存狀態,結果很多的資料都沒有跑過去。其實這題這樣來問的話可能就明了很多了,求在指定的容忍值和指定的殺怪數下,求最大能夠得到了經驗數,可能我們馬上就能想到二維揹包,一維為殺怪數,二維為容忍值,在做乙個完全揹包,可惜這題問的是在滿足公升...