多重背包模板

多重背包:

  1. 有N种物品和一个容量为V的背包。第i种物品最多有numi件可用。
  2. 每件物品的重量是wi,价值是vi。
  3. 求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。
const int maxn = 100005;
int w[maxn], v[maxn], num[maxn];//w:重量 v:价值 num:数量 // w: weight, v:value, num:number
int dp[maxn];
int V;               //V:容量//01背包
void ZeroOnePack(int w, int v)
{for (int j = V; j >= w; j--){dp[j] = max(dp[j], dp[j - w] + v);}
}
//完全背包
void CompletePack(int w, int v)
{for (int j = w; j <= V; j++){dp[j] = max(dp[j], dp[j - w] + v);}
}
//多重背包
void MultiplePack(int w, int v, int num)
{if (w * num >= V){CompletePack(w, v);}else{int k = 1;while (k < num){ZeroOnePack(k*w, k*v);num -= k;k <<= 1;}ZeroOnePack(num*w, num*v);}
}

例题

Cash Machine

POJ - 1276

思路:

多重背包裸题

直接套用模板

这里注意的是物品的价值value等于其重量weight,即v[i] = w[i]

C++代码如下:

/**
// 多重背包://         有N种物品和一个容量为V的背包。第i种物品最多有numi件可用。
//         每件物品的重量是wi,价值是vi。
//         求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 100005;
int w[maxn], v[maxn], num[maxn];//w:重量 v:价值 num:数量 // w: weight, v:value, num:number
int dp[maxn];
int V;               //V:容量//01背包
void ZeroOnePack(int w, int v)
{for (int j = V; j >= w; j--){dp[j] = max(dp[j], dp[j - w] + v);}
}
//完全背包
void CompletePack(int w, int v)
{for (int j = w; j <= V; j++){dp[j] = max(dp[j], dp[j - w] + v);}
}
//多重背包
void MultiplePack(int w, int v, int num)
{if (w * num >= V){CompletePack(w, v);}else{int k = 1;while (k < num){ZeroOnePack(k*w, k*v);num -= k;k <<= 1;}ZeroOnePack(num*w, num*v);}
}
int main()
{while (scanf("%d", &V) != EOF){int n; scanf("%d", &n);for (int i = 1; i <= n; i++){scanf("%d%d", &num[i], &w[i]);v[i] = w[i];}memset(dp, 0, sizeof(dp));for (int i = 1; i <= n; i++)MultiplePack(w[i], v[i], num[i]);printf("%d\n", dp[V]);}return 0;
}

多重背包模板 C++相关推荐

  1. Coins (多重背包)模板题

    模板请看上一篇博客 Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hibi ...

  2. hdu2191 买大米 多重背包 模板题

    念512汶川大地震遇难同胞--珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  3. hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)

    题目链接:https://vjudge.net/problem/HDU-2191 悼念512汶川大地震遇难同胞--珍惜现在,感恩生活                                   ...

  4. 01背包模板、全然背包 and 多重背包(模板)

    转载请注明出处:http://blog.csdn.net/u012860063 贴一个自觉得解说不错的链接:http://www.cppblog.com/tanky-woo/archive/2010/ ...

  5. 01背包模板、完全背包 and 多重背包

    转载请注明出处:http://blog.csdn.net/u012860063 讲解链接:http://www.cppblog.com/tanky-woo/archive/2010/07/31/121 ...

  6. 01背包,完全背包,多重背包,分组背包的使用条件以及代码模板

    背包问题算是动态规划中的入门题目了,背包问题有很多种.背包九讲中讲的很清楚,我就不班门弄斧了,针对几种比较常见的背包问题,阐述一下它的使用前提和代码模板. 1.01背包问题 题目 有N 件物品和一个容 ...

  7. dividing(多重背包)

    E - Dividing HDU - 1059 有6种宝石,价值分别为1,2,3,4,5,6. 现在有一个长度为6的数组,第i个数字表示价值为i的宝石的数量. 例如:[1,0,1,2,0,0]表示有一 ...

  8. Codeforces Beta Round #82 (Div. 2) C. Buns(多重背包)

    题目链接 题意:面包师Lavrenty打算用馅料做几个面包,然后把它们卖掉.Lavrenty有n克面团和m种不同的馅料.馅料种类的下标从1到m,他知道他的第i种馅料剩下ai 克,做一个第i种馅料的面包 ...

  9. 【蓝桥练习系统】【多重背包】 算法提高 贪吃的大嘴

    问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她 ...

最新文章

  1. 数值分析第五版电子版_二年级上册数学重点必考题20道,看看不吃亏!【有电子版】...
  2. web设计师和前端设计师的互动—前端工程师应该具备的三种思维
  3. mysql语句中事务可靠性_MYSQL中的事务
  4. scss 里的 Mixins 用法介绍
  5. php super和parent,parent()、parents()的用法区别
  6. 使用Spring.Net对Web页面进行依赖注入
  7. 使用opencv实现matlab中的imfill填充孔洞功能
  8. Vue异步组件Demo 1
  9. xlsxwriter模块安装linux,XlsxWriter模块常用方法
  10. 皮卡丘是如何发电的?
  11. 一步步教你装超强插件~油猴插件管理器Tampermonkey
  12. 《白夜行》读后感:白夜行走,暗中羁绊
  13. 中国水疗产品行业市场供需与战略研究报告
  14. 小蓝本 第一本《因式分解技巧》第四章 拆项与添项 笔记(第四天)
  15. 计算机考研各科复习时间规划,2020考研科学复习时间表,985学长强力推荐!
  16. sql语句(select,create,drop,alter,delete,insert,update,grant)
  17. 安卓开发---11 Android UI美化
  18. 天津不错的外资企业_天津外企名录大全
  19. objdump反汇编
  20. 如何使用nginx实现7层代理

热门文章

  1. 2022年计算机四级考试每日综合练习题及答案
  2. AdrenoProfiler抓取游戏纹理和shader
  3. 四五年级计算机课,三四五年级信息技术教学计划
  4. redis6 入门级教程,有整合案例,可以直接看整合案例,简单入门,直接上手
  5. 怎么从计算机中往打印机传,打印机怎么传真 打印机传方法【详细介绍】
  6. 7.1 Robustness and Correctness健壮性与正确性
  7. php安装与下载,学习PHP网站开发 连载——PHPCMS的下载与安装详解
  8. 光影软件测试自学,使用set a light 3D STUDIO来学习如何布光②
  9. 搜索引擎蜘蛛捕捉器(PHP)
  10. 考验记忆力的翻牌小游戏