知道時間 t ,有n 株備選藥品,知道每件藥品的數量是無限的,採摘一株需要用時 v,價值 w;
求 t 時間內,能採摘的最大價值的藥;
用 i 表示當前可以放進箱子的物品總數量不等,因為每種藥可以拿多株,
這是乙個似乎比3選x 更複雜的組合問題。
題目要求知道最優狀態,所以可以忽略過程;
降維分析,因為只考慮物體的體積,不考慮形狀等亂七八糟的東西,用打表:
用遞推的思維,正向列舉時間的消耗,得到最優解。
**:
//luogu1616:瘋狂的採藥
//完全揹包元問題
#includeusing namespace std;
int v,n,t,x;
int f[100005];
int maxx(int x,int y)
int main() }
printf("%d",f[v]);
return 0;
}
洛谷 P1616 瘋狂的採藥
題目概述 給定時間t,草藥數n,採每組草藥所需的時間a i 和該組草藥的價值b i 求在給定的時間內能採到的草藥的最大價值。每種草藥可以無限採。n 10000,且n t 10 7 解題思路 我們知道,對於這類揹包問題,時間複雜度為 n t 在題目所給的範圍內不會超時,方法與01揹包一致,不過掃瞄的順...
洛谷P1616 瘋狂的採藥
完全揹包,可以用乙個常數優化,對於同乙個價值的量,僅儲存花費最小的那個就行了,因為每種都有無限多個。includeusing namespace std int n,v int c 10005 w 10005 int d 100005 int mincost 10005 pos void compl...
洛谷p1616瘋狂的採藥
這是個樸實無華的名字,所以下面是一篇樸實無華的文章,請大牛們輕噴 洛谷上這道題確實很瘋狂。其實這是一道完全揹包的板子題,但有兩點需要注意 所以,獻上第一次全wa includeusing namespace std int f 105 105 w 105 c 105 直接用的板子,陣列開的不夠大re...