洛谷 P1616 瘋狂的採藥

2021-07-26 12:51:32 字數 620 閱讀 5315

題目概述

給定時間t,草藥數n,採每組草藥所需的時間a[i]和該組草藥的價值b[i],求在給定的時間內能採到的草藥的最大價值。每種草藥可以無限採。

n<=10000,且n*t<10^7

解題思路

我們知道,對於這類揹包問題,時間複雜度為(n*t)在題目所給的範圍內不會超時,方法與01揹包一致,不過掃瞄的順序相反。

時間複雜度:o(n*t)

空間複雜度:o(t)

源程式

vara:array[0..100002]of longint;

i,n,j,x,y,t:longint;

begin

readln(t,n);

for i:=1 to n do

begin

readln(x,y);

for j:=t-x downto 0 do

if a[j+x]+y>a[j] then a[j]:=a[j+x]+y;

end;

write(a[0]);

end.

洛谷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...

洛谷P1616 瘋狂的採藥 基礎DP

題意 給t時間和m種草藥,每種草藥給出採摘用時及價值,每種都可以無限採摘,求出在給定時間可以得到的最多價值 思路 揹包問題,用dp思想很容易想到o t 的方法,轉移方程dp i max dp i dp i j dp j 就是用小於當前價值的所有時間求出當前時間的最大價值 include includ...