題目:hdu1171
題意:把乙個多重揹包盡可能地分成相等的兩份。
解答:揹包的總乘重為所有重量的一半,然後盡可能地接近這個總乘重就好。
//多重揹包
#include#include#includeusing namespace std;
const int maxn = 300000;
int dp[maxn];
int n,w;
int value[55],num[55];
void zero_one_bag(int weight,int value)
void certain_num_bag(int weight,int value,int num)
zero_one_bag(num*weight,num*value);
return;
}int main()
w = sum / 2;
for(int i = 1;i <= n;i++)
certain_num_bag(value[i],value[i],num[i]);
int a = max(dp[w],sum - dp[w]);
int b = sum - a;
printf("%d %d\n",a,b);
}return 0;
}
python多重揹包 多重揹包
多重揹包問題 有 n 種物品和乙個容量是 v 的揹包。第 i 種物品最多有 si 件,每件體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使物品體積總和不超過揹包容量,且價值總和最大。輸出最大價值。資料範圍 0 n v 100 0 vi wi si 100 樸素版多重揹包問題 樸素版完全揹包問...
多維多重揹包問題 01揹包,完全揹包,多重揹包
csdn 專業it技術社群 登入 blog.csdn.net有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求將哪些物品裝入揹包可使價值總和最大。1.1空間優化 這要求在每次主迴圈中我們以 v v 0 的遞減順序計算 f v 這樣才能保證計算 f v 時 f v ci 儲存的...
揹包學習 多重揹包揹包
有n種物品和乙個容量為v的揹包。第i種物品最多有n i 件可用,每件費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。狀態轉移方程 f i v max 此時他面臨的不是01揹包的選與不選的問題,而是從n i 裡面選多少個的問題。實現方法 1 轉化...