本题就是一个简单的01背包问题  

1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小。所以可以确定属性为 MAX

2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的大

就可以得到动态规划的表达式

f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]);

就可以得到完整的代码

#include <iostream>

using namespace std;
const int N = 55 , M = 20010;
int f[M][M];
int w[N];
int n;
int v;
int main()
{
cin >> v >> n;
for ( int i = 1; i <= n; i++ ) cin >> w[i]; for( int i = 1 ; i <= n ; i++ )
for( int j = 0 ; j <= v ; j++ )
{
f[i][j] = f[i -1][j];
if( j >= w[i] ) f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]);
}
cout << v - f[n][v];
return 0;
}

我觉得这个还是不够好,由于此题是线性Dp所以我们用滚动数组进行优化

得到以下代码,一下就变快了不少呢

#include <iostream>

using namespace std;
const int N = 55 , M = 20010;
int f[M];
int w[N];
int n;
int v;
int main()
{
cin >> v >> n;
for ( int i = 1; i <= n; i++ ) cin >> w[i]; for ( int i = 1 ; i <= n; i++ )
for ( int j = v; j >= w[i]; j-- )
{
f[j] = max(f[j],f[j - w[i]] + w[i]);
}
cout << v - f[v];
return 0;
}

最新文章

  1. 敏捷转型历程 - Sprint4 回顾会
  2. Windows下安装node
  3. CSU 1809 Parenthesis(线段树+前缀和)
  4. 强大的网络通信框架(不实现缓存)--第三方开源--AsyncHttpClient
  5. CentOS 配置Apache+Mysql+PHP (yum)与卸载
  6. BootStrap 智能表单系列 十 自动完成组件的支持
  7. Push segues can only be used when the.....
  8. java 一维数组
  9. 【BZOJ5316】[JSOI2018]绝地反击(网络流,计算几何,二分)
  10. Alpha冲刺随笔四:第四天
  11. Pytorch中的Batch Normalization操作
  12. 通过ssh实现远程登陆服务器!
  13. Spring事务管理要点总结
  14. numpy.argsort详解
  15. [leetcode]236. Lowest Common Ancestor of a Binary Tree 二叉树最低公共父节点
  16. Vue-cli 配置开发环境让测试服务器监听所有IP
  17. Day6 jQuery
  18. bzoj 4919 [Lydsy1706月赛]大根堆 set启发式合并+LIS
  19. 【数论】【扩展欧几里得】Codeforces Round #484 (Div. 2) E. Billiard
  20. Rafy中的EventBus

热门文章

  1. code-server服务端开发利器,再也不用vim装逼了!!!
  2. Python基础—文件操作(Day8)
  3. CentOS8安装启用telnet服务
  4. (待补充)diff 算法解析
  5. 记录一次有趣misc
  6. 案例二:shell脚本获取当前日期和时间及磁盘使情况
  7. Oracle分析函数/排名函数/位移函数/同比环比
  8. 2020CCPC长春F. Strange Memory
  9. HBase面试
  10. insert一个表的数据到另外一个表