备战蓝桥杯 Day12(二维费用背包+分组背包)

二进制分解多重背包

269:【例9.13】庆功会

【题目描述】

为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。

 

#include<iostream>
using namespace std;
const int N = 5e3+10, M = 6e3+10;
int m, n, w[N], v[N],s[N], dp[M];
//状态 dp[j] 前i件物品在背包容量不超过j的情况下的最大价值
//状态转移方程 if (j >= w[i]) dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
int main() {cin >> n >> m; int ww, vv, ss;int id = 0;for (int i = 1; i <= n; i++) {cin >> ww >> vv >> ss;//输入每种物品的容量、价值、数量//针对ss进行二进制分解for (int j = 1; j <= ss; j <<= 1) {w[++id] = j * ww;v[id] = j * vv;ss -= j;}//如果二进制分解后的ss有剩余,则按剩余ss倍的物品存储if (ss) {w[++id] = ss * ww;v[id] = ss * vv;ss = 0;}}//二进制优化多重背包时间复杂度O(nm) 其中n是二进制分解后的物品种类//注意,二进制分解后的物品种类不再是n,是idfor (int i = 1; i <= id; i++) {for (int j = m; j >= w[i]; j--) {dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}}cout << dp[m] << endl;return 0;
}

二维费用背包

1271:【例9.15】潜水员

【题目描述】

潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?

例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:

3 36 120

10 25 129

5 50 250

1 45 130

4 20 119

如果潜水员需要5升的氧和60升的氮则总重最小为249(1,2或者4,5号气缸)。

你的任务就是计算潜水员为了完成他的工作需要的气缸的重量的最低值。

#include<iostream>
using namespace std;
/*
二维费用背包(基础就是01背包)
状态dp[j][k] 前i种物品在背包1容量不超过j的情况且背包2容量不超过k的情况下构成的最小价值
状态转移方程  dp[j][k]=min(dp[j][k],dp[j-w1[i]][k-w2[i]]+v[i]);
*/
const int N = 1e3 + 10, M = 1e2 + 10;
int n, m1, m2;
int w1[N], w2[N], v[N], dp[M][M];
int main() {cin >> m1 >> m2 >> n;for (int i = 1; i <= n; i++)cin >> w1[i] >> w2[i] >> v[i];//注意,本题求最小价值,dp一定初始化为最大memset(dp, 0x3f, sizeof dp);dp[0][0] = 0;for (int i = 1; i <= n; i++) for (int j = m1; j >= 0; j--) for (int k = m2; k >= 0; k--) dp[j][k] = min(dp[j][k], dp[max(0,j - w1[i])][max(0,k - w2[i])] + v[i]);cout << dp[m1][m2] << endl;return 0;
}

分组背包

特点:n种物品,每种物品只有一件,分到不同的组中,每组最多选一件

状态和状态转移方程同01背包一样

1272:【例9.16】分组背包

【题目描述】

一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn�1,�2,...,��,它们的价值分别为C1,C2,...,Cn�1,�2,...,��。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

#include<iostream>
#include<vector>
using namespace std;
/*
分组背包
特点:n种物品,每种物品只有一件,分到不同的组中,每组最多选一件
状态和状态转移方程同01背包一样
*/
const int N = 40, M = 210;
int m, n,t,p, w[N], v[N], dp[M];
int main() {cin >> m >> n >> t;vector<int> group[N];for (int i = 1; i <= n; i++) {cin >> w[i] >> v[i] >> p;group[p].push_back(i);//根据组号p完成分组}//01背包可以看成特殊的分组背包,即每种物品都是单独的一组for (int i = 1; i <= t; i++) {for (int j = m; j >= 1; j--) {//针对当前第i组的背包容量j,去枚举每件物品选/不选,找到其中的最优解dp[j](保证组内最多选一件)for (int k = 0; k < group[i].size(); k++) {int id = group[i][k];if (j >= w[id]) dp[j] = max(dp[j], dp[j - w[id]] + v[id]);}}}cout << dp[m] << endl;return 0;
}

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

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

相关文章

高级RAG:揭秘PDF解析

原文地址&#xff1a;https://pub.towardsai.net/advanced-rag-02-unveiling-pdf-parsing-b84ae866344e 2024 年 2 月 3 日 附加内容&#xff1a;揭秘PDF解析&#xff1a;如何从科学pdf论文中提取公式 对于RAG&#xff0c;从文档中提取信息是一个不可避免的场景。确保从源头…

Flutter学习6 - Dart 类与对象

1、面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;三大特征 &#xff08;1&#xff09;封装 封装是指将对象的状态&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;封装在一起&#xff0c;对外部隐藏对象的内部细节&#xff0c;只提…

#LLM入门|Prompt#1.1 第一部分_面向开发者的LLM入门教程_简介

Prompt工程&#xff1a;解锁大语言模型潜能的关键技巧 随着大语言模型&#xff08;LLM&#xff09;的兴起&#xff0c;Prompt工程已成为开发者利用LLM构建功能强大应用的关键技能。在这个新时代&#xff0c;Prompt不仅是指导LLM的输入形式&#xff0c;更是塑造其能力上限与下限…

Python 在Word中创建表格并填入数据、图片

在Word中&#xff0c;表格是一个强大的工具&#xff0c;它可以帮助你更好地组织、呈现和分析信息。本文将介绍如何使用Python在Word中创建表格并填入数据、图片&#xff0c;以及设置表格样式等。 Python Word库&#xff1a; 要使用Python在Word中创建或操作表格&#xff0c;需…

OpenCV 4基础篇| OpenCV图像基本操作

目录 1. 图像读取1.1 cv2.imread() 不能读取中文路径和中文名称1.2 cv2.imdecode() 可以读取中文路径和中文名称 2. 图像的显示2.1 openCV显示图像 cv2.imshow()2.2 matplotlib显示图像 plt.imshow() 3. 图像的保存 cv2.imwrite()4. 图像的复制4.1 img.copy()4.2 np.copy()4.3 …

【C++STL】STL容器详解

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

RabbitMQ 网络分区处置策略配置

概述 集群成员之间的网络连接故障会影响客户端操作的数据一致性和可用性&#xff08;如CAP定理&#xff09;。 由于不同的应用程序对一致性有不同的要求 并且可以容忍不同程度的不可用&#xff0c;可以使用不同的分区处理策略。 检测网络分区 节点确定其对等节点是否关闭&am…

个性化纹身设计,Midjourney带你探索独一无二的艺术之美

hello,大家好&#xff0c;欢迎回来。 在当今社会&#xff0c;纹身已经变得非常常见。 在寻求与众不同的个性化纹身时&#xff0c;你是否曾经为了找不到独特的设计而苦恼&#xff1f; 现在&#xff0c;Midjourney将为你打开一扇全新的艺术之门&#xff0c;引领你探索纹身设计…

高通 Android 12 Settings不显示版本号问题

1、最近项目遇到一个奇葩问题&#xff0c;编译系统版本号不见了&#xff1f; 2、一开始我想着可能是自己代码没有make clean结果编译几个小时&#xff0c;然后烧录固件发现还是未生效。 3、然后这时候我又去看git log review最近修改也没有太大发现&#xff08;待定&#xff…

docker安装flink

docker安装flink 5.1、拉取flink镜像&#xff0c;创建网络 docker pull flink docker network create flink-network5.2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES&…

第一篇:大纲

目录 第一篇&#xff1a;大纲 第二篇&#xff1a;CamX初认识(框架、代码结构介绍) 第三篇&#xff1a;CamX日志打印系统 第四篇&#xff1a;CamX确认当前选择的usecase、pipeline、sensormode 第五篇&#xff1a;CamX添加自定义node 第六篇&#xff1a;CamX添加自定义ven…

ArcgisForJS如何在线编辑ArcGIS Server发布的几何要素?

文章目录 0.引言1.ArcGIS创建几何要素2.ArcGIS Server发布几何要素3.ArcgisForJS在线编辑ArcGIS Server发布的几何要素 0.引言 ArcGIS For JS 是一种用于创建和编辑地理信息的 JavaScript 库&#xff0c;它允许用户在线编辑 ArcGIS Server 发布的几何要素。本文从ArcGIS创建几…

07 MyBatis之高级映射 + 懒加载(延迟加载)+缓存

1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体…

Yolov9全文翻译!

Yolo v9全文翻译 论文链接&#xff1a;&#x1f47f; YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 代码链接&#xff1a;&#x1f47f; https://github.com/WongKinYiu/yolov9/tree/main 大量图片来袭&#xff01;

为什么说抖店适合电商新手入局?门槛及运营玩法,今天一文详解!

大家好&#xff0c;我是电商小布。 现在&#xff0c;越来越多的人开始加入到了电商这个行业&#xff0c;原因就是看到了它发展的可能性。 而抖音小店这个项目&#xff0c;作为近几年发展势头非常猛的电商项目&#xff0c;成为了很多小伙伴们的首选。 为什么会这样呢&#xf…

QT/自定义槽和信号

创建两个类student和teacher&#xff0c;父类都为QObject 在teacher中自定义Signal&#xff0c;hungry //自定义信号&#xff0c;写道signals下 signals://返回值void//只需要声明//可以有参数&#xff0c;可以重载void hungry();void hungry(QString FoodName); 在student中…

抖音数据抓取工具|视频内容提取软件

引言部分&#xff1a; 介绍针对抖音视频下载需求开发的强大工具突出解决用户获取抖音视频繁琐问题的初衷 工具功能介绍&#xff1a; 详细描述工具功能&#xff0c;包括关键词搜索、自动批量抓取、选择性批量下载等提及基于C#开发的优势以及支持通过分享链接进行单个视频抓取…

10:部署Dashboard|部署Prometheus|HPA集群

部署Dashboard&#xff5c;部署Prometheus&#xff5c;HPA集群 Dashboard部署Dashboard上传镜像到私有仓库安装服务发布服务创建管理用户查看登录的Token信息 Prometheus步骤一&#xff1a;导入所有后续需要的镜像到私有镜像仓库&#xff08;在master主机操作操作&#xff09;步…

【区块链】智能交易模式下的数据安全流通模型

【区块链】智能交易模式下的数据安全流通模型 写在最前面**区块链智能交易模式概述****数据安全流通的挑战****数据安全流通模型的核心要素****实现数据安全流通的区块链技术****区块链智能交易模式下数据安全流通模型的设计原则****数据安全流通模型的应用案例分析****面临的挑…

ONLYOFFICE8.0——赋能办公

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xdAoM2pHRmDFP0tF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…