計算dp陣列的時候
裡面兩層for迴圈調換位置對結果沒有影響
「個數成本」一定要從1到max
「花費成本」就看是01揹包還是完全揹包來決定逆序還是順序
最終的目標是耐久度剩餘最大 即耐久度花費最小
把兩個成本和目標分清楚就沒問題了
【為了把他萌分清楚我想了好久orz】
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int maxn = 130
;const
int inf = 100000
;int
a[maxn], b[maxn];
intdp[maxn][maxn];
intmain()
if(ans ==inf)
printf(
"-1\n");
else
printf(
"%d\n
", m -ans);
}return0;
}
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會得到相應的...