背包问题大合集--算法模板

背包问题模板

  • 01背包
  • 完全背包
  • 多重背包
    • 01背包加强版
    • 二进制优化版
  • 二维费用背包
  • 分组背包
  • 总结

01背包

一维数组优化状态转移方程

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N], n, V, w, v;
int main(){cin >> n >> V;//物品数量和背包容量while(n -- ){cin >> w >> v;//物体体积和价值for(int i = V; i >= w; -- i) {//注意只能倒序遍历a[i] = max(a[i], a[i - w] + v);}}cout << a[V] << '\n';return 0;
}

完全背包

一维数组优化状态转移方程

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int a[N], n, V, w, v;
int main(){cin >> n >> V;//物品数量和背包容量while(n -- ){cin >> w >> v;//物体体积和价值for(int i = w; i <= V; ++ i) {//注意只能顺序遍历a[i] = max(a[i], a[i - w] + v);}}cout << a[V] << '\n';return 0;
}

多重背包

01背包加强版

#include <bits/stdc++.h>
using namespace std;
const int N = 205;
int dp[N], n, m, w, v, s;int main() {cin >> n >> m;//商品数量和背包容量for(int i = 1; i <= n; ++ i) {cin >> w >> v >> s;//体积、价值、数量while(s --) for(int j = m; j >= w; -- j) dp[j] = max(dp[j], dp[j - w] + v);}cout << dp[m] << '\n';return 0;
}

二进制优化版

#include <bits/stdc++.h>
using namespace std;
const int N = 2e4 + 6;
int dp[N], n, m, w, v, s;int main() {cin >> n >> m;//商品数量和背包容量for(int i = 1; i <= n; ++ i) {cin >> w >> v >> s;//体积、价值、数量for(int k = 1; k <= s; s -= k, k *= 2) {//二进制优化for(int j = m; j >= k * w; -- j) dp[j] = max(dp[j], dp[j - k * w] + k * v);}for(int l = m; l >= s * w; -- l) dp[l] = max(dp[l], dp[l - s * w] + s * v);}cout << dp[m] << '\n';return 0;
}

二维费用背包

很简单啊,就是在一维的基础上加一重循环。

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N][N], n, V, M, v, m, w;int main() {cin >> n >> V >> M;//商品数量、背包体积、背包重量while(-- n) {cin >> v >> m >> w;//商品的体积、重量、价值for(int i = V; i >= v; -- i)for(int j = M; j >= m; -- j)a[i][j] = max(a[i][j], a[i - v][j - m] + w);}cout << a[V][M] << '\n';return 0;
}

分组背包

#include <bits/stdc++.h>
using namespace std;
const int N = 2005;
int dp[N][N], n, m, w, v, s;
int main() {cin >> n >> m;//商品组数和背包容量for(int i = 1; i <= n; ++ i) {cin >> s;//每组商品个数while(s --) {cin >> w >> v;//商品的体积、价值for(int j = m; j >= 0; -- j) {dp[i][j] = max(dp[i - 1][j], dp[i][j]);//选与不选if(j >= w) dp[i][j] = max(dp[i][j], dp[i - 1][j - w] + v);}}}cout << dp[n][m] << '\n';return 0;
}

总结

就以上这些背包问题啊。注意以上的背包问题,完全背包需要顺序遍历其他的背包都是逆序遍历,因为都是一维背包演变过来的。以上的代码模板均是正确的,放心使用。

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

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

相关文章

【零基础学习05】嵌入式linux驱动中platform与设备树基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天主要学习一下,基于总线、设备和驱动进行匹配的平台驱动模型,这次将采用设备树的platform设备与驱动的编写方法,目前绝大多数的Linux内核已经支持设备树,这次主要来…

西井科技参与IATA全球货运大会 以AI绿动能引领智慧空港新未来

3月12日至14日&#xff0c;由国际航空运输协会IATA主办的全球货运大会&#xff08;World Cargo Symposium&#xff09;在中国香港成功举办&#xff0c;这是全球航空货运领域最大规模与影响力的年度盛会。作为大物流领域全球领先的“智能化与新能源化”综合解决方案提供商&#…

c语言中const的一些使用细节

在C语言中&#xff0c;这三个指针声明具有不同的含义&#xff1a; const char *p; p 是一个指针&#xff0c;指向一个常量字符。你不能通过 p 来修改这个字符的值&#xff0c;但是可以修改 p 来指向另一个字符。 char const *p; 这与 const char *p; 完全相同。它同样表示 …

05-ESP32-S3-IDF USART

ESP32-S3 IDF USART详解 USART简介 USART是一种串行通信协议&#xff0c;广泛应用于微控制器和计算机之间的通信。USART支持异步和同步模式&#xff0c;因此它可以在没有时钟信号的情况下&#xff08;异步模式&#xff09;或有时钟信号的情况下&#xff08;同步模式&#xff…

【STL】string各种函数的应用

1.string 基本赋值操作 string assign&#xff08;string str&#xff0c;int n&#xff09; string assign&#xff08;string str,int pos,int n&#xff09; 2.string存取字符操作 (at()) 注意&#xff1a;[ ]越界不会抛出异常&#xff0c;at越界会抛出异常 3.string拼接…

前端框架的发展史详解

前端框架的发展史是一个充满变革与创新的过程&#xff0c;其背后反映了互联网技术的快速发展和用户需求的日益复杂化。以下是对前端框架发展史的详细解析&#xff1a; 1. 古典时代与静态网页 在1990年代初&#xff0c;HTML被发明并开始广泛使用&#xff0c;这是前端开发的起点…

bpmn-js系列之Palette

前边写了四篇文章介绍了bpmn.js的基本使用&#xff0c;最近陆续有小伙伴加我催更&#xff0c;感谢对我这个半吊子前端的信任&#xff0c;接着更新bpmn.js的一些高级用法&#xff0c;本篇介绍对左侧工具栏Palette的隐藏和自定义修改 隐藏shape 左侧工具栏Palette有些图标我用不…

如何利用ChatGPT联系英语口语和听写!分享一些Prompt!

参考文章 ChatGPT4升级方法 namecheap购买方法 sora namecheap 支付 首先先看ChatGPT修改英语作文的能力 足以证明ChatGPT的能力 ChatGPT英语练习 口语&#xff1a; 实时交谈纠错发音纠错语句 写作&#xff1a; 写作建议构思文本 模拟考试&#xff1a; 雅思、托福和…

网络安全等级保护2.0自查表 | 管理部分

等保2.0自查表&#xff0c;管理部分&#xff0c;参考标准&#xff1a; GB∕T 22239-2019 《信息安全技术 网络安全等级保护基本要求》 GB∕T 28448-2019 《信息安全技术网络安全等级保护测评要求》 等保2.0自查表管理部分 范围 控制点 检查项 三级要求 二级要求 安全管理…

在域控的Users目录下批量创建用户组,名称来自Excel

对于CSV文件&#xff0c;PowerShell可以直接读取并处理&#xff0c;无需额外安装模块。假设你的CSV文件中&#xff0c;用户组名称在第一列&#xff0c;文件名为"groups.csv"&#xff0c;可以使用以下PowerShell脚本来批量创建&#xff1a; # 读取CSV文件中的数据 $g…

西门子PLCS7-1200位逻辑指令的使用

1.LAD触点 常开触点的位值为1时&#xff0c;常开触点将闭合&#xff08;ON&#xff09;。位值为0时&#xff0c;常开触点将闭合&#xff08;OFF&#xff09;。 常闭触点的位值为1时&#xff0c;常闭触点将闭合&#xff08;OFF&#xff09;。位值为0时&#xff0c;常闭触点将闭…

2024.3.13 C++

思维导图 设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace…

HttpContext请求接收上下文模块设计与实现(http模块四)

目录 类功能 类定义 类实现 编译测试 类功能 类定义 // HttpContext接收请求上下文模块功能设计 typedef enum {RECV_HTTP_ERROR,RECV_HTTP_LINE,RECV_HTTP_HEAD,RECV_HTTP_BODY,RECV_HTTP_OVER } HttpRecvStatu;class HttpContext { private:int _resp_statu; …

【leetcode热题】寻找旋转排序数组中的最小值

已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若旋转 7 次&#xff0…

数据库基础知识超详细解析~‍(进阶/复习版)

文章目录 前言一、数据库的操作1.登入数据库2.创建数据库3.显示当前数据库4.使用数据库5.删除数据库 二、常用数据类型三、数据库的约束1约束类型2NULL约束3UNIQUE:唯一约束4DEFAULT&#xff1a;默认值约束5 PRIMARY KEY&#xff1a;主键约束6 FOREIGN KEY&#xff1a;外键约束…

Devin,第一位AI软件工程师

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

浏览器文件下载

文章目录 浏览器下载json普通文件浏览器下载excel文件【借助Workbook】 浏览器下载json普通文件 /*** 设备模型导出(带分组).** param request 请求* param response 响应*/ProjectResourceOperation(summary "设备模型导出(带分组)")PostMapping("/export&qu…

php 对接Bigo海外广告平台收益接口Reporting API

今天对接的是Bigo广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到BIGO后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://www.bigossp.com/guide/sdk/reportingApi/doc?type1 接入这些第三方广告…

JS高级_数据类型

undefined与null的区别? undefined代表没有赋值null代表赋值了, 只是值为null // 1. undefined与null的区别?var a1var a2 nullconsole.log(a1, a2)什么时候给变量赋值为null呢? var a null //已经确定a是一个对象, 但还没具体赋值&#xff08;开始&#xff09;a null …

高性能 数据库连接池 HikariCP | MySQL 最佳性能实践

👀 上节回顾:前面几节中,我们了解了 HikariCP 配置及连接池大小误区。 👉 本节目标:实战!!! HikariCP + MySQL 最佳性能配置!!! 常用的 MySQL 数据库与 HikariCP 进行优化配置,可以达到最佳性能! MySQL 配置 为了获得 MySQL 的最佳性能,我们需对一些配置进行优化。…