慶功會 多重揹包二進位制優化

2021-09-29 13:05:33 字數 881 閱讀 2485

第二天叫醒我的不是鬧鐘,是夢想!

為了慶賀班級在校運動會上取得全校第一名成績,班主任決定開一場慶功會,為此撥款購買獎品犒勞運動員。

期望撥款金額能購買最大價值的獎品,可以補充他們的精力和體力。

輸入格式

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

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

輸出格式

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

資料範圍

n≤500,m≤6000,

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.h>

using namespace std;

const int n

=15000

;int dp[n]

;int n,m;

int v,w,cnt;

int main()

else

for(int j=m;j>=c*v;j--

) dp[j]

=max

(dp[j]

,dp[j-c*v]

+c*w);}

} cout<<}

慶功會 多重揹包問題c

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

多重揹包二進位制優化

多重揹包二進位制優化 將價值數量相同的物品分成1,2,4,8.因為100以內任何數都可以由幾個2的n次方數組成。所以,有遍歷沒乙個數變為遍歷每乙個2的n次方數。例題 有n種物品,每種物品的數量為c1,c2.cn。從中任選若干件放在容量為w的揹包裡,每種物品的體積為w1,w2.wn wi為整數 與之相...

多重揹包(二進位制優化)

馬上就要輕院校賽了,沒時間了,下面是網上找的多重揹包,感覺很好 void zeroonepack int cost,int weight,int n void completepack int cost,int weight,int n void multipack int c,int w,int ...