洛谷 P1049 装箱问题- 01背包-动态规划

news/2024/11/13 3:50:20/

题目描述

有一个箱子容量为 V V V,同时有 n n n 个物品,每个物品有一个体积。
现在从 n n n 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。

输入格式

第一行共一个整数 V V V,表示箱子容量。
第二行共一个整数 n n n,表示物品总数。
接下来 n n n 行,每行有一个正整数,表示第 i i i 个物品的体积。

输出格式

  • 共一行一个整数,表示箱子最小剩余空间。

样例输入 #1

24
6
8
3
12
7
9
7

样例输出 #1

0

提示

对于 100 % 100\% 100% 数据,满足 0 < n ≤ 30 0<n \le 30 0<n30 1 ≤ V ≤ 20000 1 \le V \le 20000 1V20000

思路:把物品重量看作价值,转换为求解01背包问题。

#include<iostream>
#include<algorithm>using namespace std;const int N = 50;int q[N], f[N][20001];int main() {int V, n;cin >> V;cin >> n;for (int i = 1; i <= n; i ++) {cin >> q[i];}for (int i = 1; i <= n; i ++) {for (int j = 1; j <= V; j ++) {if (j >= q[i]) {f[i][j] = max(f[i - 1][j], f[i - 1][j - q[i]] + q[i]);} else {f[i][j] = f[i - 1][j];}}}cout << V - f[n][V] << endl;return 0;
}

http://www.ppmy.cn/news/87464.html

相关文章

货拉拉Java开发实习

目录 1.Java的重载和重写有什么区别2.什么情况下需要用到重载3.有很多个字符串和变量&#xff0c;需要把它们加起来&#xff0c;这时候用String会有什么问题4.有没有其它的替代方案5.StringBuffer和StringBuilder有什么区别6.一个自定义对象&#xff0c;分别创建了两个实例&…

安全中级2:nginx的中间件漏洞

目录 一、nginx解析php的流程 1.原理 2.CGI、FastCGI、PHP-FPM、PHP-CG、WrapperI的定义 二、Fastcgi协议 1.Fastecgi Record 2.Fastcgi Type 3.PHP-FPM(FastCGI进程管理器) 4.总结FastCGI解析的流程 三、nginx配置错误导致的漏洞 1.CRLF注入漏洞&#xff08;$uri解…

二叉树的相关知识

1.树概念及结构 1.1树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#…

LeetCode 674 最长连续递增序列

题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 l < i < r&#xff0c;都有 nums[i] <…

【瑞萨RA_FSP】UART 编程实战

文章目录 一、UART收发回显二、UART指令控制RGB灯三、基于环形队列的UART收发回显 一、UART收发回显 UART只需两根信号线即可完成双向通信&#xff0c;对硬件要求低&#xff0c;使得很多模块都预留UART接口来实现与其他模块或者控制器进行数据传输&#xff0c; 比如GSM模块&am…

立创梁山派学习笔记——GPIO输入检测

按键检测 前言按键的硬件电路BOOT选择复位按键唤醒按键GPIO输入框图软件配置寄存器简介1.端口控制寄存器&#xff08;GPIOx_CTL, xA..I&#xff09;2.端口上拉/下拉寄存器&#xff08;GPIOx_PUD, xA..I&#xff09;3.端口输入状态寄存器&#xff08;GPIOx_ISTAT, xA..I&#xf…

Java 核心技术 卷I 第3 章 Java 的基本程序设计结构

第3 章 Java 的基本程序设计结构 3.1 一个简单的Java应用程序 Java区分大小写 关键字public 称为访问修饰符 &#xff08;access modifier&#xff09; 这些修饰符用于控制程序的其他部分对这段代码的访问级别。 关键字class表明Java程序中的全部内容都包含在类中。 类是…

自动化测试 selenium

目录 一、了解自动化测试和selenium 1. 什么是自动化测试&#xff1f;为什么要使用自动化测试&#xff1f; 2. 为什么使用selenium&#xff1f; 3. 环境部署 4. 什么是驱动&#xff1f;驱动的工作原理 5. selenium 的依赖代码 二、selenium 的基础语法 1. 元素的定位 …