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

2021-07-30 14:50:40 字數 820 閱讀 5599

馬上就要輕院校賽了,沒時間了,下面是網上找的多重揹包,感覺很好

void zeroonepack(int cost, int weight, int n) 

void completepack(int cost, int weight, int n)

void multipack(int c, int w, int num, int n, int m)

zeroonepack(num[i] * c[i], num[i] * w[i], m);

} }}

poj1276是一道多重揹包題 by wjqin

const int maxn = 125007;

int w[55], num[55];

int dp[maxn];

void zeroonepack(int c, int w, int v, int dp)

void completepack(int c, int w, int v, int dp)

void multipack(int n, int c, int w, int num, int dp)

else

zeroonepack(c, num[i] * w[i], num[i] * w[i], dp);

} }}

wa到不知道為啥子,memset(dp, 0,sizeof(dp));有時並未將dp陣列中的值賦為0(可能與sizeof有關), fill()更靠譜些,

big event int hdu

多重揹包二進位制優化

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

多重揹包二進位制優化

時間長不寫 感覺變菜了。整體優化思路和快速冪很相近 如果第i個物品有num i 個,花費是 c i 價值是 v i 那麼我們可以把它拆分成數個物品。比如某個物品數量是14 花費是cost 價值是value 1 2 4 7 就可以把14個相同物品看成 4 個不同的物品,物品 數量花費 價值第乙個 11...

二進位制優化多重揹包

優化多重揹包的方式中兩種常用的是單調佇列和二進位制優化,今天主要學習了一下二進位制優化 徵集各方資料 先說下 01 揹包,有n 種不同的物品,每個物品有兩個屬性 size 體積,value 價值,現在給乙個容量為 w 的揹包,問 最多可帶走多少價值的物品。int f w 1 f x 表示揹包容量為x...