時間限制: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 32 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...