luogu P1048

知识点总结:背包问题(0/1 背包)

问题描述:给定一个背包的容量 TM 种物品,每种物品具有体积 x 和价值 y。在不超过背包容量 T 的前提下,选择若干物品,使得总价值最大化。

1. 动态规划状态说明(DP状态说明)

在这个背包问题中,我们使用动态规划来求解。

  • 状态定义:定义 dp[j] 表示背包容量为 j 时能够得到的最大价值。
  • 初始状态dp[0] = 0,表示当背包容量为 0 时,没有物品可以放入,价值为 0。
2. 递推公式

在处理每件物品时,我们有两个选择:

  • 不选这件物品,则当前背包容量 j 的最大价值仍然是 dp[j]
  • 选这件物品,则最大价值变为 dp[j - x] + y(前一个容量为 j - x 的最大价值,加上当前物品的价值)。

因此,递推公式为:
[
dp[j] = \max(dp[j], dp[j - x] + y)
]

逆序遍历:为了确保每个物品在每次选择中只被使用一次,我们在容量从大到小的顺序进行遍历,以免重复计算一个物品的价值。

3. 代码实现

根据上述思路,代码实现如下:

#include <bits/stdc++.h>using namespace std;const int N = 1e4;
int dp[N];int main()
{int T, M;cin >> T >> M;int x, y;// 遍历每种物品for (int i = 0; i < M; i++){cin >> x >> y;// 逆序遍历容量,防止重复使用物品for (int j = T; j >= x; j--){dp[j] = max(dp[j], dp[j - x] + y); // 递推公式:取最大值}}cout << dp[T]; // 输出容量为 T 时的最大价值return 0;
}
  • 输入部分:读取背包容量 T 和物品数量 M,以及每件物品的体积 x 和价值 y
  • 动态规划填表:对于每件物品 xy,通过逆序遍历 j 更新 dp[j] 的值,确保背包容量 j 时获得的最大价值。
  • 输出结果dp[T] 即为在给定容量 T 时背包能够达到的最大总价值。

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

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

相关文章

CUDA解说

CUDA&#xff08;Compute Unified Device Architecture&#xff09;是NVIDIA公司开发的一种并行计算平台和编程模型。 它允许开发者使用NVIDIA的GPU&#xff08;图形处理单元&#xff09;进行通用计算&#xff0c;即GPGPU&#xff08;General-Purpose computing on Graphics P…

解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题

解决&#xff1a;使用EasyExcel导入Excel模板时出现数据导入不进去的问题 在Java中&#xff0c;当我们用EasyExcel导入Excel时&#xff0c;可能会出现数据导入不进去的问题。例如&#xff1a; 这种异常等。 问题原因1&#xff1a;这个1代表从第几行开始&#xff0c;你的exce…

UPCOMING LAUNCH即将推出 Starship‘s Sixth Flight Test星舰的第六次飞行测试

The sixth flight test of Starship is targeted to launch as early as Monday, November 18.Starship 的第六次飞行测试预计最早于 11 月 18 日星期一启动。 A live webcast of the flight test will begin about 30 minutes before liftoff, which you can watch here and …

Redis 基础数据改造

优质博文&#xff1a;IT-BLOG-CN 一、服务背景 基础数据查询服务&#xff1a;提供航司&#xff08;5000家&#xff09;、机场&#xff08;4000&#xff09;、票台&#xff08;40000&#xff09;、城市&#xff08;4000&#xff09;等基础数据信息。 痛点一&#xff1a;因为基…

水库大坝安全监测预警方法

一、监测目标 为了确保水库大坝的结构安全性和运行稳定性&#xff0c;我们需要采取一系列措施来预防和减少因自然灾害或其他潜在因素所引发的灾害损失。这不仅有助于保障广大人民群众的生命财产安全&#xff0c;还能确保水资源的合理利用和可持续发展。通过加强大坝的监测和维护…

在Scrapy爬虫中应用Crawlera进行反爬虫策略

在互联网时代&#xff0c;数据成为了企业竞争的关键资源。然而&#xff0c;许多网站为了保护自身数据&#xff0c;会采取各种反爬虫技术来阻止爬虫的访问。Scrapy作为一个强大的爬虫框架&#xff0c;虽然能够高效地抓取网页数据&#xff0c;但在面对复杂的反爬虫机制时&#xf…

day20:三剑客——awk基础

一&#xff0c;概述 AWK 是一种用于处理文本和数据的编程语言&#xff0c;特别擅长用于处理格式化文本文件。它通过将输入数据分成字段&#xff0c;逐行进行处理&#xff0c;广泛应用于数据分析、文本处理和系统管理中。 二&#xff0c;使用方式 命令模式&#xff08;重点&a…

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7&#xff1a; 前置知识&#xff1a; [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM&#xff08;长短期记忆神经网络&#xff09;StatQuest_哔哩哔哩_bilibili 大部分思路来自于&#xff1a; PyTorch LSTM和LSTMP…

半导体企业如何利用 Jira 应对复杂商业变局?

以下是一篇关于如何利用 Jira 构建半导体企业数字化研发管理蓝图的文章。借鉴了 ONES 案例中的思路&#xff0c;并结合了 Jira 的特点&#xff0c;为半导体企业在复杂商业环境下进行数字化转型提供支持&#xff1a; 半导体企业如何利用 Jira 应对复杂商业变局&#xff1f; 在全…

嵌入式开发之进程执行另外程序

进程-exec函数族 进程调用exec函数族执行某个程序进程当前内容被指定的程序替换实现让父子进程执行不同的程序,父进程创建子进程,子进程调用exec函数族,父进程不受影响,例如:shell,接收程序名称,执行用户指定的程序。1、进程-execl/execlp //进程-execl/execlp #includ…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式&#xff0c;可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

【Rust设计模式之建造者模式】

Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离&#xff0c;使用专门的builder进行建造&#xff0c;说白了就是new和其他的方法分开&#xff0c;集中处理更方便。 直接上代码&#xff1a; #[derive(Debug)] struct children {nam…

Servlet 3.0 新特性全解

文章目录 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模块支持servlet3.0提供的异步处理提供异步原因实现异步原理配置servlet类成为异步的servlet类具体实现异步监听器改进的ServletAPI(上传文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

PPT文件设置了修改权限,如何取消权?

不知道大家在使用PPT文件的时候&#xff0c;是否遇到过下面的提示框&#xff0c;这就是PPT文件设置了修改权限&#xff0c;只有输入密码才可以编辑文件。 如果我们没有输入密码&#xff0c;以只读方式进入&#xff0c;那么我们会发现功能栏中的按钮全是灰色&#xff0c;无法使用…

牛客sql题目总结(1)

1.第N高的薪水 AC: create function getnthhighestsalary(n int) returns int begindeclare m int; set m n - 1; return (select distinct salaryfrom employeeorder by salary desclimit m, 1); end 2.平均播放进度大于60%的视频类别 AC&#xff1a; select tb_video_info…

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集

命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务&#xff0c;用于自动识别和分类文本中的实体&#xff0c;例如人物、位置、组织等。尽管它很重要&#xff0c;但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…

2024年10月个人工作生活总结

本文为 2024年10月工作生活总结。 研发编码 一个证书过期问题记录 某天&#xff0c;现场反馈某服务无法使用问题&#xff0c;经同事排查&#xff0c;是因为服务证书过期导致的。原来&#xff0c;证书的有效期设置为5年&#xff0c;这个月刚好到期。 虽然这个问题与自己无直接…

AIGC:人工智能生成内容的未来

文章目录 一、AIGC的定义与背景1.1 AIGC的起源与发展1.2 AIGC的核心技术 二、AIGC的核心技术解析2.1 生成对抗网络&#xff08;GANs&#xff09;2.2 变分自编码器&#xff08;VAEs&#xff09;2.3 自然语言处理&#xff08;NLP&#xff09;与文本生成 三、AIGC的应用场景四、AI…

【51单片机】串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…

线程函数和线程启动的几种不同形式

线程函数和线程启动的几种不同形式 在C中&#xff0c;线程函数和线程启动可以通过多种形式实现。以下是几种常见的形式&#xff0c;并附有相应的示例代码。 1. 使用函数指针启动线程 最基本的方式是使用函数指针来启动线程。 示例代码&#xff1a; #include <iostream&g…