51nod 1086 多重背包模板
来源:互联网 发布:java怎么解压zip文件 编辑:程序博客网 时间:2024/06/09 16:50
有N种物品,每种物品的数量为C1,C2......Cn。从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数)。求背包能够容纳的最大价值。
#include <iostream>#include <cstring>#include <cmath>#include <string>#include<cstring>using namespace std;const int SIZE = 50001;long long dp[SIZE],volume[101],value[101],c[101];int n,v; //总物品数,背包容量void ZeroOnepark(int val,int vol){ //01背包for (int j =v ;j >= vol;j-- ){dp[j]=max(dp[j],dp[j-vol]+val);}}void Completepark(int val,int vol){ //完全背包for (int j =vol;j <= v;j++ ){dp[j]=max(dp[j],dp[j-vol]+val);}}void Multiplepark(int val,int vol,int amount){ //多重背包if (vol*amount >= v) Completepark(val,vol);else{int k = 1;while (k < amount){ZeroOnepark(k * val, k * vol);amount -= k;k <<= 1;}if (amount > 0) {ZeroOnepark(amount * val, amount * vol);}}}int main(){while (cin>>n>>v){for (int i = 1 ; i <= n ; i++){cin>>volume[i]>>value[i]>>c[i]; //费用,价值,数量} memset(dp,0,sizeof(dp));for (int i = 1;i <= n;i++){Multiplepark(value[i],volume[i],c[i]);}cout<<dp[v]<<endl;}return 0;}
0 0
- 51nod 1086 多重背包模板
- 51nod-1086 多重背包
- 51nod-1086 背包问题(多重背包)
- 51nod--多重背包
- 多重背包问题(51Nod 1086)
- 51Nod 1086背包问题V2(多重背包)
- 51Nod 1086 背包问题 V2(二进制多重背包)
- 51nod 1086 背包问题 V2(多重背包)
- 51nod 1086 背包问题V2(巧妙拆分多重背包)
- 51nod 1086 背包问题 V2(多重背包问题)
- 51nod 1086 背包问题 V2 多重背包
- 51nod 1086 背包问题v2 多重背包
- 51nod oj 1086 背包问题 V2 【多重背包问题】
- 51nod 1086 背包问题 V2(多重背包)
- 51Nod 1086 背包问题 V2(多重背包)
- 51Nod 1086 背包问题 V2(二进制多重背包)
- 51nod 1086 背包问题 V2 (多重背包问题)
- 51nod 1086 背包问题 V2 (多重背包)
- USACO-Section 3.1-PROB Stamps
- Mac Xcode 配置OpenCv开发环境
- 大学毕业后拉开差距的原因
- Java EE V7.0学习笔记-Oracle Enterprise Pack for Eclipse (OEPE) 12.2.1下载就可以使用
- PHP实现飞信接口来通过网页免费发短信
- 51nod 1086 多重背包模板
- 【POJ】2524 - Ubiquitous Religions(并查集,水)
- Activity的启动模式
- 迷宫问题(输出路径)
- 利用face++的人脸检测实现的眼球跟随效果
- 桥接模式
- 活动选择问题
- 2015年年终总结
- 分析分布式服务框架