思路:二維完全揹包。雖然每個怪獸的數量沒有限制,但怪獸總數量有限制,所以除了忍耐度,還要加一維怪獸數量。
題目要求剩餘忍耐度盡可能的大,所以這裡把列舉忍耐度放到第一層迴圈,當忍耐度列舉到乙個下限能達到所需經驗值,停止列舉。
// hdu 2159 fate.cpp 執行/限制:0ms/1000ms
#include #include #include #include using namespace std;
int a[105], b[105];
int dp[105][105];
int main()
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= m; i++) }}
if (dp[i][s] >= n)
} printf("%d\n", re == -1 ? re : m - re);
} return 0;
}
HDU2159 FATE 二維完全揹包
problem description 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的...
HDU 2159 FATE(二維完全揹包)
中文題目就不用解釋了 就是裸的二維完全揹包 d i j 表示消耗i忍耐殺j個怪最多可獲得的經驗 然後就用完全揹包來做了 二維揹包揹包不過是多了一重迴圈 include include includeusing namespace std const int n 105 int main return...
HDU 2159 FATE 二維完全揹包
problem description 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每殺乙個怪xhd會得到相應的...