洛谷 P1049 装箱问题【正难则反/01背包】
2024-09-04 10:47:01
题目描述
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
输入输出格式
输入格式:
一个整数,表示箱子容量
一个整数,表示有n个物品
接下来n行,分别表示这n 个物品的各自体积
输出格式:
一个整数,表示箱子剩余空间。
输入输出样例
输入样例#1:
24
6
8
3
12
7
9
7
输出样例#1:
0
说明
NOIp2001普及组 第4题
这道题看似是搜索,但是可以用背包做。
题目要求求出最小的剩余空间,也就是要求出最大的可装重量
这样,我们可以将一个物体的重量当作它的价值,进而将题目转变为一个基本的01背包问题:
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)和一个价值(等于体积)。
要求n个物品中,任取若干个装入箱内,使总价值最大。
对于每一个物体,都有两种状态:装 与不装
那么,对于任意重量m的最大价值 f (m) = max ( f ( m - w[i] ) + w[i], f (m) )(w为重量(即价值))
其中,f ( m - w[i] ) 指在装了物品i后,箱子的剩余容量能装的最大重量
f ( m - w[i] ) + w[i] 指在在装了物品i后,箱子能装的最大重量
#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
const int maxn = 1e3+5;
const int N = 20005;
#define ll long long
/*
有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)和一个价值(等于体积)。
要求n个物品中,任取若干个装入箱内,使总价值最大。
*/
int t, m, n;
int c[N], v[N], dp[N];
int main()
{
while(cin >> m >> n)
{
for(int i=1;i<=n;i++)
cin >> v[i];
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++){
for(int j=m; j>=v[i]; j--){
dp[j] = max(dp[j],dp[j-v[i]]+v[i]);
}
}
cout << m-dp[m] << endl; //最小的剩余空间,也就是要求出最大的可装重量
}
}
最新文章
- css自定义三角形效果
- C++构造函数和析构函数
- 配置WCF Test Client
- 关于Python中输出中文的一点疑问
- C语言字符串声明
- jQuery基础学习3——jQuery库冲突
- Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?
- Lua代码解析-写给C和C++开发人员
- Hadoop的文件读写操作流程
- spring-security 配置文件
- mysql的登录和备份
- ARM处理器寄存器
- Oracle中表字段相关操作举例
- 怎样解决if __name__ == ";__main__";:下面的代码没有执行的问题
- 稀疏矩阵 part 4
- 【tmos】spring data jpa 创建方法名进行简单查询
- Excel中快捷键Ctrl+End覆盖过多
- JAVA在Windows使用apache commons-csv导出CSV解决方案
- 从后端接口下载文件的2种方式:get方式、post方式
- level 6 - unit 2 - 情态动词May
热门文章
- 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?
- 《Cracking the Coding Interview》——第18章:难题——题目10
- 【Kernel Logistic Regression】林轩田机器学习技术
- 就算WORD高手也无法解释的Word的一些疑惑.,一些已经解决,一些没有解决
- 【Python】print 方法的参数
- 团队冲刺Alpha(九)
- nyoj 题目21 三个水杯
- 【bzoj2097】[Usaco2010 Dec]Exercise 奶牛健美操 二分+贪心
- 【NOI 2015网络同步赛】
- YouTube高效传输策略:节省14%带宽 用户体验提升