TaoTao要吃雞 (牛客 01揹包)

2021-08-15 03:18:48 字數 1238 閱讀 2382

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

taotao的電腦帶不動絕地求生,所以taotao只能去玩pc版的荒野行動了,

和絕地求生一樣,遊戲人物本身可以攜帶一定重量m的物品,裝備揹包

之後可以多攜帶h(h為0代表沒有裝備揹包)重量的東西。玩了幾天

taotao發現了乙個bug,當裝備揹包之後,如果可攜帶重量沒有滿,就

可以拿乙個任意重的東西。(解釋看樣例)有一天taotao空降到了乙個

奇怪的島上,島上有n件裝備,每個裝備都有重量wi和威力值vi,但taotao

不認識這些裝備,所以他來求助你,挑選威力最大的裝備,幫助他吃雞。

本題有多組輸入(小於10),當n=0時結束輸入。

第一行輸入n,m,h。n,m,h為整數,並且0<=n,m,h<=100,

接下來n行,每行輸入第i個物品的物品的重量wi和威力值vi。0<=wi,vi<=100.

輸出最大威力值,每組輸出一行。
示例1

3 3 3

2 33 2

2 30

8

若h=0:卡不了bug,就是能承受的總重量就是m,套01揹包即可;

若h不等於0:可以卡bug,假設第k件**是最後卡bug放進去的,那麼,只要用01揹包算能承受的總重量就是m+h-1的時候的最大價值(此時計算dp的過程中不能再考慮第k件**)+第k件**的價值即可。k就列舉1-n;

#include #include #include #include #include #include #include using namespace std;

const int max=250;

int n,m,h;

int w[max],v[max]; //重量和價值

int dp[max];

int main()

int ans=0;

//沒有揹包,不能卡bug

if(h==0)

}ans=dp[m];

}//有揹包,能卡bug

else

}ans=max(ans,dp[m+h-1]+v[k]);}}

printf("%d\n",ans);

}return 0;

}

牛客網 TaoTao要吃雞 0 1揹包變形

題意 題目鏈結 分析 如果沒有 bug 即 h 0 的時候 就是乙個普通的 0 1 揹包 需要討論一下 h 0 的情況 此時有就相當於有物品是有特權的 而且揹包裝有特權的物品根據題目的要求是應當最後裝的 也就是說特權物品裝完之後揹包將不再可裝 所以特權物品肯定是只有乙個的 資料量並不大,所以可以去列...

TaoTao要吃雞(01揹包)

題目描述 taotao的電腦帶不動絕地求生,所以taotao只能去玩pc版的荒野行動了,和絕地求生一樣,遊戲人物本身可以攜帶一定重量m的物品,裝備揹包 之後可以多攜帶h h為0代表沒有裝備揹包 重量的東西。玩了幾天 taotao發現了乙個bug,當裝備揹包之後,如果可攜帶重量沒有滿,就 可以拿乙個任...

TaoTao要吃雞(01揹包)

題目戳我 思路 當h 0時直接套01揹包即可。當h 0時能卡bug,我們假設第k個 是卡bug放進去的,那麼我們只需用01揹包求出承受m h 1重量時的最大價值,那麼此後的最大價值為dp m h 1 第k個價值,故只需1 n列舉 define first f define second s defi...