ssl2289 慶功會 多重揹包

2021-07-30 14:05:33 字數 1274 閱讀 4782

慶功會time limit:10000ms  memory limit:65536k

total submit:235 accepted:94 

case time limit:1000ms

description

為了慶賀班級在校運動會上取得第一名的成績,班主任決定開一場慶功會,為此拔款購買獎品獎勵運動員,期望拔款金額能購買最大價值的獎品,可以補充他們的精力和體力。

input

第一行二個數n(n<=500),m(m<=5000),其中n代表希望購買的物品的種數,m表示班會撥的錢數。 

接下來n行,每行3個數,v、w、s,分別表示第i種物品的**、價值(** 與 價值 是不同的概念)和購買的數量(只能買0件或s件),其中v<=100,w<=1000,s<=10 

output

第一行:乙個數,表示此次購買能獲得的最大的價值(注意!不是**)。

sample input

5 1000

80 20 4

40 50 9

30 50 7

20 20 1

sample output

1040

source

var

v,w,s,f:array[0..6000]of longint;

n,m,i,j,k:longint;

function max(a,b:longint):longint;//狀態轉移~

begin

if a>b then exit(a);

exit(b);

end;

begin

read(n,m);

for i:=1 to n do readln(v[i],w[i],s[i]);

for i:=1 to n do

for j:=m downto 0 do//用來求越少錢來買東西

for k:=0 to s[i] do//用來看這個物品要不要多買

begin

if j-k*v[i]<0 then break;//如果買了這堆東西就沒錢了就沒得買了啊

f[j]:=max(f[j],f[j-k*v[i]]+k*w[i]);

end;

writeln(f[m]);

end.

慶功會 多重揹包問題c

慶功會 問題描述 w 為了慶賀班級在校運動會上取得全校第一名成績,班主任決定開一場慶功 會,為此撥款購買獎品犒勞運動員。期望撥款金額能購買最大價值的獎品,可以補充他們的精力和體力。輸入格式 w 第一行二個數 n n 500 m m 6000 其中n 代表希望購買的獎品的種數,m 表示撥款金額。w 接...

慶功會 解題報告(多重揹包模板)

problem description 為了慶賀班級在校運動會上取得全校第一名成績,班主任決定開一場慶功會,為此撥款購買獎品犒勞運動員。期望撥款金額能購買最大價值的獎品,可以補充他們的精力和體力。input 對於每組資料的第一行二個數n n 500 m m 6000 其中n代表希望購買的獎品的種數,...

DP 多重揹包 慶功會 HUSTOJ2821

為了慶賀班級在校運動會上取得全校第一名成績,班主任決定開一場慶功會,為此撥款購買獎品犒勞運動員。期望撥款金額能購買最大價值的獎品,可以補充他們的精力和體力。第一行二個數n n 500 m m 6000 其中n代表希望購買的獎品的種數,m表示撥款金額。接下來n行,每行3個數,v w s,分別表示第i種...