Day100 代码随想录打卡|动态规划篇--- 01背包问题(一维数组版)

news2024/11/17 23:47:15

题目(卡玛网T46):

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。 

小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。

方法:本体和昨天的题目一样,只是昨天在解决问题时我们使用了二维数组,一个代表物品一个代表背包。但其实我们通过递推公式dp[i][j]=max(dp[i-1][j], dp[i][j-weight[i]] + value[j])可以发现我们可以简化问题。原因在于我们在计算dp[i][j]时使用的是从上一层推导而来的i-1,而我们如果在计算dp[i][j]时将上一层的值拷贝下来,在dp[j]进行计算,就可以将问题转化为一维数组的问题。同时递推公式可以变为dp[j] = max(dp[j], dp[j - weight[i]] + value[i]),也即去掉了一个维度。同时这种情况下我们需要考虑更多的问题

1:dp数组含义:dp[j]代表任取0-i的物品,容量为j的背包所能获得的最大价值

2:地推公式:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])

3:初始化:因为递推公式中有max函数,因此不能影响计算出来的值,要用最大的非负整数0

4:遍历顺序:一维数组的遍历顺序不像二维数组那么随意,只能是先遍历物品再遍历背包,并且遍历背包时只能从最大容量的背包开始往小遍历,原因是因为我们使用了一维数组,如果正序遍历背包会出现重复放置一个物品的情况,这和实际不相符。从另一个角度来看,因为我们将数组压缩,本层数组拷贝了上一层的数值,如果从前往后遍历,每次使用的数值是刚计算出来的本层的值而不是上一层拷贝下来的值。

5:举例推导:略

方法:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int m, n;
    cin >> m >>n;
    vector<int> costs(m);
    vector<int> value(m);
    for(int i = 0; i < m; i++){
        cin >> costs[i];
    }
    for(int i = 0; i < m; i++){
        cin >> value[i];
    }
    
    vector<int> dp(n + 1, 0);
    
    for(int i = 0; i < m; i++){
        for(int j = n; j >= costs[i]; j--){
            dp[j] = max(dp[j], dp[j - costs[i]] + value[i]);  //递推公式
        }
    }
    cout << dp[n] << endl;
    return 0;
}

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

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

相关文章

2024外研社综合能力大赛第一场真题

网上找滴~自用 审核不过&#xff0c;备考指南发知乎了&#xff1a;https://zhuanlan.zhihu.com/p/730698685

基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue

基于GIKT深度知识追踪模型的习题推荐系统 目录结构 Flask-BackEnd flask后端 app 后端主体文件 alg 深度学习模块 data 数据集data_process.py 数据预处理gikt.py GIKT模型pebg.py PEBG模型params.py 一些参数train.py 仅模型训练train_test.py 模型训练和测试-五折交叉验证t…

C++ 语言课程笔记

C 语言课程笔记 C语言程序设计第四版——谭浩强著&#xff0c;此书中的代码题大部分已经在本文中展示&#xff0c;以及南开大学 C 语言上机题库 100 题的作答&#xff0c;如果有作答不正确的地方或者可优化的地方&#xff0c;欢迎指正&#xff0c;谢谢&#xff01; 001 屏幕输出…

一招搞定苹果安卓跨系统传输,文件大小再也不是问题

在当今多元化的科技市场中&#xff0c;众多手机品牌竞相推出各自的产品&#xff0c;每个品牌都力图打造独特的用户体验和生态系统。然而&#xff0c;这种品牌之间的多样性也带来了一定的挑战&#xff0c;尤其是在不同品牌体系之间互联互通性方面。由于每个品牌都有自己的操作系…

VMware虚拟机Centos操作系统——配置docker,运行本地打包的镜像,进入conda环境(vmware,docker新手小白)

1.docker-centos运行sudo yum install -y yum-utils报错 遇到问题 解决&#xff1a; 进入/etc/yum.repos.d目录下找到 CentOS-Base.repo&#xff0c;执行下面两个命令&#xff1a; cp CentOS-Base.repo CentOS-Base.repo.backupvi CentOS-Base.repo 进入后改成&#x…

前缀和(4)_除自身以外数组的乘积

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 前缀和(4)_除自身以外数组的乘积 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录…

央国企董事会管理方案,数字化助力会议、制度、信披、投资全过程全方位管理

董事会建设是中国特色现代企业制度的重要内容。近日&#xff0c;国务院国资委召开中央企业董事会建设工作推进会&#xff1a;到明年年底&#xff0c;中央企业集团和二级子企业层面董事会建设要取得重要实质性进展&#xff0c;董事会制度更加健全、运行更加规范&#xff0c;作用…

如何进行光伏项目卫星踏勘?

一、卫星地图选址 1. 数据获取 卫星踏勘的第一步是获取高分辨率的卫星图像。利用卫星遥感技术&#xff0c;可以获取项目候选区域的地形地貌、植被覆盖等详细信息。这些数据通过专业的遥感图像处理软件进行分析和解译&#xff0c;提取出对光伏电站建设有重要影响的关键因素&am…

【Git使用】向Gitee/Github上传代码时配置gitignore忽略文件

概述&#xff1a; 在进行项目开发时&#xff0c;尤其是使用Git进行版本控制时&#xff0c;我们经常会遇到一些不需要上传到代码仓库的文件&#xff0c;比如编译生成的文件、临时文件、日志文件等。这时候&#xff0c;我们就需要使用.gitignore文件来忽略这些文件。本文将介绍如…

单点登录sso部署

文章目录 同域下的单点登录原理不同域下的单点登录原理 第三方 OAuth2 授权登录支持第三方登录 本地用keycloak实现1、生成证书2、编写docker-compose.yml文件3、创建持久化数据目录4、接下来启动docker-compose5、访问keycloak 单点登录英文全称Single Sign On&#xff0c;简称…

宠物浮毛难清理,希喂、小米、美的宠物空气净化器该选哪款?

养猫养出病来说的就是我了。 养猫之前幻想的一人一猫幸福生活还没一个月&#xff0c;我就进了医院。我自认为是很爱干净的人&#xff0c;养猫后打扫得更勤快了&#xff0c;早晚都给猫咪梳毛。平时卫生也没少搞&#xff0c;家里也是很干净的&#xff0c;实在不明白为什么会过敏…

语义分割性能提升---通过优化损失改进分割效果

本文主要总结最近的调研调试结果&#xff0c;介绍通过改进损失来提升语义分割的分割效果&#xff1b;当然还有其他途径&#xff0c;比如蒸馏&#xff08;提升分割效果&#xff09;、剪枝&#xff08;提升fps&#xff09;&#xff0c;之前博客有总结&#xff0c;此处不做介绍。 …

数字化AI直播系统领创者:赋能无人直播新动力,永久告别假AI!

数字化AI直播系统领创者&#xff1a;赋能无人直播新动力&#xff0c;永久告别假AI&#xff01; 在数字化浪潮汹涌的今天&#xff0c;AI技术正以前所未有的速度渗透并重塑着各行各业&#xff0c;而直播行业作为数字经济的重要组成部分&#xff0c;更是迎来了AI技术深度融合的崭…

C++类和对象第一关

一&#xff1a;类的定义 &#xff08;一&#xff09;类的定义 &#xff08;1&#xff09;类的定义格式&#xff1a; class name{ // 类成员变量 // 类方法&#xff08;函数&#xff09; }; class是定义类的关键字&#xff0c;name为定义的类的名字&#xff0c;后面的花括号…

【高中数学/对数函数/零点】已知函数f(x)=1/x-log(2,x),在下列区间中,包含f(x)零点的区间是?

【题目】 已知函数f(x)1/x-log(2,x),在下列区间中&#xff0c;包含f(x)零点的区间是&#xff1f; A.(0,1) B.(2,3) C.(3,∞) D.(1,2) 【出处】 《高考数学极致解题大招》P136 第二题 中原教研工作室编著 【解答】 零点即01/x-log(2,x),移项得1/xlog(2,x) 两曲线y1/x…

【C++习题】2.双指针_移动零

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法&#xff08;快排的思想&#xff1a;数组划分区间 - 数组分两块&#xff09;&#xff1a;C 算法代码&#xff1a;图解 题目链接&#xff1a; 283.移动零 题目描述&#xff1a; 解法&#xff08;快排的思想&#xff1a;数…

聚铭下一代智慧安全运营中心荣获CNNVD兼容性资质证书

近日&#xff0c;聚铭网络旗下安全产品——聚铭下一代智慧安全运营中心正式通过了国家信息安全漏洞库&#xff08;CNNVD&#xff09;兼容性认证测试&#xff0c;荣获国家信息安全漏洞库兼容性资质证书。 关于CNNVD兼容性 国家信息安全漏洞库&#xff08;CNNVD&#xff09;是…

Iceberg 基本操作和快速入门

安装 Iceberg 是一种适用于大型分析表的高性能工具&#xff0c;通过spark启动并运行iceberg&#xff0c;文章是通过docker来进行安装并测试的 新建一个docker-compose.yml文件 文件内容 version: "3" services: spark-iceberg: image: tabulario/spark-iceberg co…

干部画像如何精准科学识别优秀干部

干部画像作为一种精准、科学的评价工具&#xff0c;在识别优秀干部方面发挥着关键作用。通过全面、深入、系统地收集、整理和分析干部的多维度信息&#xff0c;形成一幅反映干部综合素质和能力的立体画卷&#xff0c;为组织部门提供了详实可靠的依据。以下是干部画像在精准、科…

Colorful/七彩虹将星X15 AT22 2022 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能&#xff0c;自动重建COLORFUL RECOVERY功能&#xff0c;恢复到新机开箱状态。 【格式】&#xff1a;iso 【系统类型】&#xff1a;Windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 注意&#xff1a;安装系统会…