DP 多重揹包 慶功會 HUSTOJ2821

2021-08-18 16:37:01 字數 724 閱讀 2314

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

第一行二個數n(n≤500),m(m≤6000),其中n代表希望購買的獎品的種數,m表示撥款金額。

接下來n行,每行3個數,v、w、s,分別表示第i種獎品的**、價值(**與價值是不同的概念)和能購買的最大數量(買0件到s件均可),其中v≤100,w≤1000,s≤10。

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

5 1000

80 20 4

40 50 9

30 50 7

40 30 6

20 20 1

1040

#include using namespace std;

int dp[6005];

int main()

//二進位制優化 1~n可由2^0~2^k(=v[i]*k;j--)

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

t-=k; //剩餘待計算

k*=2;

}for(int j=m;j>=t*v[i];j--)

dp[j]=max(dp[j],dp[j-v[i]*t]+w[i]*t);}}

cout

}

慶功會 多重揹包問題c

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

ssl2289 慶功會 多重揹包

慶功會time limit 10000ms memory limit 65536k total submit 235 accepted 94 case time limit 1000ms description 為了慶賀班級在校運動會上取得第一名的成績,班主任決定開一場慶功會,為此拔款購買獎品獎勵運...

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

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