hdu3732 多重揹包 二進位制優化

2021-07-10 14:55:52 字數 426 閱讀 4106

題意:n件物品,揹包大小為c,每件物品有一定的價值和體積,求揹包能裝的最大價值。

思路:如果用01揹包做肯定超時,因為資料給得太大了,我們可以根據價值和體積來區分物品,相當於揹包空間和含有的價值 有多個,多重揹包,然後用二進位制優化,再用01揹包來做;

**:

#include

#include

#include

#define max(x,y) (x>y?x:y)

int dp[10005];

int main()

for(i=1;i<=10;i++)

for(k=s;k>=zz*j;k--)

dp[k]=max(dp[k],dp[k-zz*j]+zz*i);}}

printf("%d\n",dp[s]);

}}

HDU 3732 多重揹包

這道題目意思很簡單就是 輸入 n 和 c n是代表n行,而c是複雜性,輸入一些單詞,然後告訴這些單詞的價值,還有這些單詞的複雜性!一開始我一看這個題目就以為是01揹包,然後就馬上寫完,第一組測試資料過了,但是卻wa!後來看別人的部落格,發現用多重揹包,就想想,後來想通了,首先用01揹包做第一組資料之...

多重揹包二進位制優化

多重揹包二進位制優化 將價值數量相同的物品分成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 ...