1 /*
 2 将01背包,完全背包,和多重完全背包问题结合起来,那么就是混合三种背的问题
 3 根据三种背包的思想,那么可以得到
 4 混合三种背包的问题可以这样子求解
 5 for(int i=1; i<=N; ++i)
 6 if(第i件物品是01背包)
 7     zeroOnePack(c[i],w[i]);
 8 else if(第i件物品是完全背包)
 9     completePack(c[i],w[i]);
10 else if(第i件物品是多重完全背包)
11     multiplePack(c[i],w[i],n[i]);
12
13 这样能得到最优解的原因是,因为前一层已经是得到最优解了,
14 当前层求解最优解的时候,我们考虑要使用三种背包中的哪一种方法
15 而不用考虑前一层是怎么得到最优解的
16 */
17
18 #include <stdio.h>
19 #include <string.h>
20 int cash;
21 int n[11],dk[11];
22 int dp[1000000];
23 inline int max(const int &a, const int &b)
24 {
25     return a < b ? b : a;
26 }
27 void CompletePack(int cost)
28 {
29     for(int i=cost; i<=cash; ++i)
30         dp[i] = max(dp[i],dp[i-cost]+cost);
31 }
32 void ZeroOnePack(int cost)
33 {
34     for(int i=cash; i>=cost; --i)
35         dp[i] = max(dp[i],dp[i-cost]+cost);
36 }
37 void MultiplePack(int cnt, int cost)
38 {
39     if(cnt*cost >=cash)//如果第i种物品的费用总和超过背包容量,那么就是完全背包问题
40         CompletePack(cost);
41     else
42     {
43         int k = 1;//二进制拆分
44         while(k<cnt)//判断剩下的数字能不能够拆分为k
45         {
46             ZeroOnePack(cost*k);
47             cnt -=k;
48             k<<=1;
49         }
50         ZeroOnePack(cnt*cost);
51     }
52 }
53 int main()
54 {
55     //输入的处理以及函数的调用
56     return 0;
57 }

转载于:https://www.cnblogs.com/justPassBy/p/4279238.html

背包九讲之四(混合三种背包问题)相关推荐

  1. 完全背包问题python_令人头疼的背包九讲(2)完全背包问题

    重磅干货,第一时间送达 背包问题是一个经典的动态规划模型.它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题. 题目 完全背包问题 题目要求 有n ...

  2. dd大牛的背包九讲-背包问题汇总

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

  3. 背包问题——背包九讲

    本帖主要为转载,只是供我学习,如有侵权,请联系我删除. 前言 本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较为完善的NOIP难度的动态规划总结,名 ...

  4. 第二讲 完全背包问题(对背包九讲的学习)

    学习自:背包九讲 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. ...

  5. 算法--背包九讲(详细讲解+代码)

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

  6. dalao的背包九讲

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

  7. 【转】《背包九讲》--崔添翼大神

    背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物 ...

  8. 转载——背包九讲(原文链接已不可考)

    浙大崔添翼对背包问题的讲解,观点很高也很深刻,特此转载. 背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问 ...

  9. Backpack-problem背包九讲笔记

    背包问题 1 01背包 1.1题目 有NNN件物品和一个容量为VVV的背包,放入第iii件物品耗费的费用是CiC_iCi​,得到的价值是WiW_iWi​.求解将哪些物品放入背包可使价值总和最大. ex ...

最新文章

  1. 基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例
  2. 定位的准确度与精度指标定义——RMS,CEP,Sigma
  3. 普罗米修斯java_springboot集成普罗米修斯(Prometheus)的方法
  4. 离群值如何处理_有理处理离群值的局限性
  5. 一文吃透Json解析工具类合集(FastJson、Jackson、Gson)
  6. RocketMq 事务消息使用
  7. mysql skip slave_MYSQL replication slave-skip-errors 详解
  8. python模拟登录淘宝_Python模拟登陆淘宝示例源码
  9. 计算机课评课用语,【数学评课50条】_评课常用语50条
  10. 如何将计算机网络作为热点,教你如何三步让笔记本电脑做wifi热点??
  11. lazarus 中文教程_Delphi 项目转Lazarus 教程
  12. 区块链的发展与未来前景!
  13. 手机b站封面提取网站_二次元之家 视频网站B站上海与北京办公设计欣赏
  14. 什么软件测试苹果手机循环电池,如何检查iPhone电池的电池循环次数,看完你就明白了...
  15. 苹果手机测距离_重量仅6g,智能距离检测,安卓苹果平板手机都能用,声光多级提醒...
  16. Linux服务器运行状况全面监测
  17. LinuxTracing System浅析和eBPF开发经验分享
  18. iPhoneX安全区域与H5引发的问题(Safe Area)
  19. python项目练习
  20. 如何授权企业证书,使用企业级的APP

热门文章

  1. mysql my.cnf参数配置_MySQLmy.cnf参数配置优化详解
  2. JZOJ 5922. 【NOIP2018模拟10.23】sequence
  3. JZOJ 5477. 【NOIP2017提高组正式赛】宝藏
  4. v3是c语言吗 yolo_YOLOv3
  5. Qt 软键盘[模拟]之键盘触发事件
  6. 简述osi参考模型各层主要功能_计软考研双日练 | OSI参考模型各层提供什么服务?...
  7. 如何快速切换静态和动态ip
  8. CVPR 2018 MCCT:《Multi-Cue Correlation Filters for Roubust Visual Tracking》论文笔记
  9. mongo 时间格式化 查询_MongoDB中查询转换(将时间戳转变通用日期格式)
  10. 互动整合营销_今天,我们谈谈展会的整合营销!