题目描述

有一个箱子容量为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; //最小的剩余空间,也就是要求出最大的可装重量
}
}

最新文章

  1. css自定义三角形效果
  2. C++构造函数和析构函数
  3. 配置WCF Test Client
  4. 关于Python中输出中文的一点疑问
  5. C语言字符串声明
  6. jQuery基础学习3——jQuery库冲突
  7. Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?
  8. Lua代码解析-写给C和C++开发人员
  9. Hadoop的文件读写操作流程
  10. spring-security 配置文件
  11. mysql的登录和备份
  12. ARM处理器寄存器
  13. Oracle中表字段相关操作举例
  14. 怎样解决if __name__ == &quot;__main__&quot;:下面的代码没有执行的问题
  15. 稀疏矩阵 part 4
  16. 【tmos】spring data jpa 创建方法名进行简单查询
  17. Excel中快捷键Ctrl+End覆盖过多
  18. JAVA在Windows使用apache commons-csv导出CSV解决方案
  19. 从后端接口下载文件的2种方式:get方式、post方式
  20. level 6 - unit 2 - 情态动词May

热门文章

  1. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?
  2. 《Cracking the Coding Interview》——第18章:难题——题目10
  3. 【Kernel Logistic Regression】林轩田机器学习技术
  4. 就算WORD高手也无法解释的Word的一些疑惑.,一些已经解决,一些没有解决
  5. 【Python】print 方法的参数
  6. 团队冲刺Alpha(九)
  7. nyoj 题目21 三个水杯
  8. 【bzoj2097】[Usaco2010 Dec]Exercise 奶牛健美操 二分+贪心
  9. 【NOI 2015网络同步赛】
  10. YouTube高效传输策略:节省14%带宽 用户体验提升