日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

acwing 7 混合背包

發布時間:2024/8/26 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 acwing 7 混合背包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

習題地址??https://www.acwing.com/problem/content/description/7/

?

題目描述
有 N 種物品和一個容量是 V 的背包。

物品一共有三類:

第一類物品只能用1次(01背包);
第二類物品可以用無限次(完全背包);
第三類物品最多只能用 si 次(多重背包);
每種體積是 vi,價值是 wi。

求解將哪些物品裝入背包,可使物品體積總和不超過背包容量,且價值總和最大。
輸出最大價值。

輸入格式
第一行兩個整數,N,V,用空格隔開,分別表示物品種數和背包容積。

接下來有 N 行,每行三個整數 vi,wi,si,用空格隔開,分別表示第 i 種物品的體積、價值和數量。

si=?1 表示第 i 種物品只能用1次;
si=0 表示第 i 種物品可以用無限次;
si>0 表示第 i 種物品可以使用 si 次;
輸出格式
輸出一個整數,表示最大價值。

數據范圍
0<N,V≤1000
0<vi,wi≤1000
?1≤si≤1000

輸入樣例 4 5 1 2 -1 2 4 1 3 4 0 4 5 2 輸出樣例: 8

?

算法1
前三種背包處理的混合型號
01 背包則直接放入數據容器中
多重背包則化解成 01 背包 放入數據容器中(見多重背包II習題 進行二進制優化)
完全背包也直接放入數據容器中

此刻數據容器vector[HTML_REMOVED] things;中就只有01背包和完全背包 那么就進行遍歷處理

1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 6 using namespace std; 7 8 const int N = 1010; 9 10 int n,m; 11 int f[N]; 12 13 struct Thing{ 14 int kind; 15 int v,w; 16 }; 17 vector<Thing> things; 18 19 20 int main() 21 { 22 cin >> n>>m; 23 for(int i = 0;i<n;i++) 24 { 25 int v,w,s; 26 cin >> v >> w>> s; 27 if(s < 0) 28 { 29 things.push_back({-1,v,w}); 30 }else if(s == 0) things.push_back({0,v,w}); 31 else{ 32 for(int k = 1;k <= s; k*=2){ 33 s -=k; 34 things.push_back({-1,v*k,w*k}); 35 } 36 if(s > 0) things.push_back({-1,v*s,w*s}); 37 } 38 } 39 40 for(auto thing:things) 41 { 42 if(thing.kind < 0){ 43 for(int j = m;j >= thing.v;j--) f[j] = max(f[j],f[j-thing.v]+thing.w); 44 }else{ 45 for(int j = thing.v;j <= m;j++) f[j] = max(f[j],f[j-thing.v]+thing.w); 46 } 47 } 48 49 cout << f[m] << endl; 50 51 return 0; 52 } 53 54 作者:defddr 55 鏈接:https://www.acwing.com/solution/acwing/content/2198/ 56 來源:AcWing 57 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 View Code

?

轉載于:https://www.cnblogs.com/itdef/p/10913463.html

總結

以上是生活随笔為你收集整理的acwing 7 混合背包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。