有一个箱子容量为 V(正整数,0<=V<=20000),同时有 n 个物品(0<n<=30),每个物品有一个体积(正整数)。

现在在 n 个物品中,任取若干个装入箱内,使得箱子的剩余空间为最小。

收起

输入

  1. 输入:一个整数v,表示箱子容量
  2. 一个整数n,表示有n个物品
  3. 接下来 n 个整数,分别表示这 n 个物品的各自体积

输出

  1. 输出:一个整数,表示箱子最小的剩余空间

输入样例

  1. 24
  2. 6
  3. 8
  4. 3
  5. 12
  6. 7
  7. 9
  8. 7

输出样例

  1. 0
  1. #include<iostream>
  2. #include<queue>
  3. #include<algorithm>
  4. #include<set>
  5. #include<cmath>
  6. #include<vector>
  7. #include<map>
  8. #include<stack>
  9. #include<bitset>
  10. #include<cstdio>
  11. #include<cstring>
  12. //---------------------------------Sexy operation--------------------------//
  13. #define cini(n) scanf("%d",&n)
  14. #define cinl(n) scanf("%lld",&n)
  15. #define cinc(n) scanf("%c",&n)
  16. #define cins(s) scanf("%s",s)
  17. #define coui(n) printf("%d",n)
  18. #define couc(n) printf("%c",n)
  19. #define coul(n) printf("%lld",n)
  20. #define speed ios_base::sync_with_stdio(0)
  21. #define file freopen("input.txt","r",stdin);freopen("output.txt","w",stdout)
  22. //-------------------------------Actual option------------------------------//
  23. #define Swap(a,b) a^=b^=a^=b
  24. #define Max(a,b) a>b?a:b
  25. #define Min(a,b) a<b?a:b
  26. #define mem(n,x) memset(n,x,sizeof(n))
  27. #define mp(a,b) make_pair(a,b)
  28. //--------------------------------constant----------------------------------//
  29. #define INF 0x3f3f3f3f
  30. #define maxn 100005
  31. #define esp 1e-9
  32. using namespace std;
  33. typedef long long ll;
  34. typedef pair<int,int> PII;
  35. //------------------------------Dividing Line--------------------------------//
  36. int v,n;
  37. int a[maxn];
  38. int dp[maxn];
  39. int main()
  40. {
  41. cini(v),cini(n);
  42. for(int i=0; i<n; i++)
  43. cini(a[i]);
  44. for(int i=0; i<n; i++)
  45. {
  46. for(int j=v;j>=a[i];j--)
  47. {
  48. dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
  49. }
  50. }
  51. cout<<v-dp[v]<<endl;
  52. }

51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划的更多相关文章

  1. noj [1479] How many (01背包||DP||DFS)

    http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...

  2. PAT L3-001 凑零钱(01背包dp记录路径)

    韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是 ...

  3. 0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论

    一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i ...

  4. (01背包 dp)P1049 装箱问题 洛谷

    题目描述 有一个箱子容量为VV(正整数,0≤V≤20000),同时有nn个物品(0<n≤30,每个物品有一个体积(正整数). 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. 输入 ...

  5. 0-1背包dp|波动数列|2014年蓝桥杯A组10-fishers

    标题:波动数列 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a ...

  6. hiho #1038 : 01背包 (dp)

    #1038 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励 ...

  7. HDU 1203 I NEED A OFFER!(01 背包DP)

    点我看题目 题意 : 中文题不详述. 思路 :类似于01背包的DP,就是放与不放的问题,不过这个要求概率,至少得到一份offer的反面就是一份也得不到,所以先求一份也得不到的概率,用1减掉就可以得到所 ...

  8. HDU 2602 Bone Collector (01背包DP)

    题意:给定一个体积,和一些物品的价值和体积,问你最大的价值. 析:最基础的01背包,dp[i] 表示体积 i 时最大价值. 代码如下: #pragma comment(linker, "/S ...

  9. 洛谷 P1049 装箱问题(01背包)

    一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了. 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包 ...

随机推荐

  1. Java第三十五天,用JDBC操作MySQL数据库(一),基础入门

    一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...

  2. 【第一章】黎姿的python学习笔记

  3. YII基础二

    YII多表关联查询 ->select("{{%relation_detail}}.name") ->from("{{%user}}") ->l ...

  4. shell命令(一)

    什么是shell? Shell是一个应用程序,它连接了用户和Linux内核,让用户能够更加高效.安全.低成本地使用Linux内核,这就是Shell的本质. shell与Linux系统关系图 shell ...

  5. (一) Mybatis源码分析-解析器模块

    Mybatis源码分析-解析器模块 原创-转载请说明出处 1. 解析器模块的作用 对XPath进行封装,为mybatis-config.xml配置文件以及映射文件提供支持 为处理动态 SQL 语句中的 ...

  6. python基础:如何使用python pandas将DataFrame转换为dict

    之前在知乎上看到有网友提问,如何将DataFrame转换为dict,专门研究了一下,pandas在0.21.0版本中是提供了这个方法的.下面一起学习一下,通过调用help方法,该方法只需传入一个参数, ...

  7. niuke---勾股定理

    勾股定理------: 当其中一个数a大于1并且为奇数时即a=2*n+1, 那么另外两个数分别为 b=2*n*n+2*n;   c=b+1; 当a为大于等于4的偶数时,即a=2*n时,那么另外两个数分 ...

  8. Ubuntu搭建Redis 集群

    1.源码编译 查看需要下载版本:http://download.redis.io/releases/ 本人保存路径:/usr/local/soft/ wget http://download.redi ...

  9. Linux学习笔记(三)目录和文件都能操作的命令

    目录和文件都能操作的命令 rm cp mv rm 英文原意:remove files or directories 功能:删除文件或目录 语法:rm 选项[-fir] 文件或目录 rm -f 强制删除 ...

  10. vue2.x学习笔记(二)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12555836.html. 声明式渲染 vue的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进DOM的系统. ...