南沙C++信奥赛陈老师解一本通题 1270:【例9.14】混合背包

 【题目描述】

一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

【输入】

第一行:二个整数,M(背包容量,M<=200),N(物品数量,N<=30);

第2..N+1行:每行三个整数Wi,Ci,Pi,前两个整数分别表示每个物品的重量,价值,第三个整数若为0,则说明此物品可以购买无数件,若为其他数字,则为此物品可购买的最多件数(Pi)。

【输出】

仅一行,一个数,表示最大总价值。

【输入样例】

10  3
2  1  0
3  3  1
4  5  4

【输出样例】

11

【提示】

选第一件物品1件和第三件物品2件。

#include <iostream>
using namespace std;
int dp[6001][201];
int w[6001],v[6001], t[6001];//t表示背包的类型 0代表0-1背包 1=完全背包 
int main()
{int m,n,k=0;cin>>m>>n;for(int i=1;i<=n;i++){int wi,vi,pi;cin>>wi>>vi>>pi;if(pi==0){k++;w[k]=wi;v[k]=vi;t[k]=1;//表全背包 }else		//将多重背包转为0-1背包 {for(int j=1;j<=pi;j++){k++;w[k]=wi;v[k]=vi;	}//for}//else}for(int i=1;i<=k;i++)	//此时为K件物品,不是n件了 {for(int j=1;j<=m;j++)	//容量 {if(w[i]>j)dp[i][j]=dp[i-1][j];else{int put=0;if(t[i]==0)	//0-1背包put=v[i]+dp[i-1][ j-w[i] ];else		//完全背包 put=v[i]+dp[i][ j-w[i] ];int noput=dp[i-1][j];dp[i][j]=max(put,noput); }}}cout<<dp[k][m];return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/807756.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

危险区域闯入识别系统

危险区域闯入识别系统通过YOLOv8网络模型技术,危险区域闯入识别系统对工地危险区域以及厂区重要或危险区域闯入进行检测,发现有人违规闯入禁区,系统立即抓拍告警同步回传后台值班人员及时处理。危险区域闯入识别系统通过AI视频分析技术,降低事故发生有效提高工程质量监控,…

烟火识别智能监测系统

烟火识别智能监测系统基于智能视频AI分析技术,烟火识别智能监测系统对工地现场或者厂区监控画面进行实时分析,发现现场出现烟火立即抓拍实时告警同步回传后台监控平台提醒值班人员及时处理,避免发生更大的损失。烟火识别智能监测系统通过前端普通网络摄像头,配置简便成本较…

Cisco Secure Network Analytics 7.5.1 发布下载,新增功能概览

Cisco Secure Network Analytics 7.5.1 发布下载,新增功能概览Cisco Secure Network Analytics 7.5.1 发布下载,新增功能概览 Cisco Secure Network Analytics 7.5.1 - 领先的网络检测和响应 (NDR) 解决方案 Secure Network Analytics (formerly Stealthwatch) - Network Vis…

C++ lambda 捕获列表

▲《C++ Primer》 P352

读数据湖仓06数据集成

读数据湖仓06数据集成1. 数据湖仓中的数据集成 1.1. 数据湖仓的总体目标是为每一个人提供支持,包括从普通职员到CEO 1.2. 有了作为基础设施的基础数据,企业等组织才能实现真正的数据驱动 1.3. 提供组织所需的数据,最关键的一环在于提供集成的数据基础1.3.1. 只将数据扔进数据…

MSYS2 环境使用

在 Windows 环境下使用 rusqlite 库碰到了报错:由于 Windows 环境不如 Ubuntu 那样一个 apt install libsqlite3-dev 解决问题,所以采用 MSYS2 来从根源解决问题。 安装MSYS2 官网: WEB PAGE MSYS2 代理镜像下载地址:无 由于 MSYS2 自带的有国内镜像,所以按理说下载好无需配…

Echoism

Echoing reality Are your memories of me? Floating through a state, half asleep, never awake(never awake) I wont breathe in eternity Carrying your secrets feeling close to who you are Youre just beyond my reach A passing breeze, And your final moments se…

快乐数学1培养数学直觉

1 培养数学直觉我们最初接触一个概念时,会形成我们的直觉。而我们的直觉会影响我们对一门学科的喜爱程度。什么意思呢? 假设我们想给 “猫 ”下一个定义:古代的定义: 一种毛茸茸的动物,有爪子、牙齿、尾巴和四条腿,高兴时发出咕噜声,生气时发出嘶嘶声。 进化定义: 某一…

SciTech-Mathmatics-Markdown:List 嵌入 code block + LaTex: 论文写作、排版与使用 + 数学公式的输入方式

民主与共和 更好的共和度保障更高级的民主, 是因为 民主 与 共和 是统一的。 平衡态的“跃迁”是需要“吸收足够能量”, "改变"总是需要"成本"的。 在正确的方向上,每一天的学习是“质变飞跃”的必要。Markdown: List 嵌入 code block Code is possible …

简单讲讲上下界网络流

无源汇可行流 无源汇网络流一般不讨论最大流,因为它的流都是环流,分布在各个位置,一是不好统计,二是一般也没有意义。所以一般建图只需要求是否有可行解(但我也没遇到过求输出YES和NO的可行流题目,网上的博客也都只当做有源汇的前置知识讲了) 废话不多说,直接上图。第一…

Netflix 錯誤 NW-8-18

环境 PS5的奈飞,OpenWrt的树莓派做软路由解决方案 首先重置,如果不行,关机拔掉电源线等待三分钟,重试 Netflix。如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~

Python算法学习

算法学习心得,源码均为Python实现目录绪论数据结构算法算法的特征算法的评价算法的时间复杂度算法的空间复杂度递归汉诺塔问题(递归调用)查找排序二分查找检查排序是否完成冒泡排序选择排序插入排序希尔排序(高级版插入排序)快速排序堆排序(二叉树)python中内置好的堆排…