Codevs 1014(装箱问题)
2016-07-11 13:46
218 查看
题目链接:传送门
题目大意:给你一个背包体积大小为n,有m个物品,任选物品放入背包使背包剩余体积最少。
题目思路:转换为01背包求解,物品体积和价值等价,问题要使剩余空间最少,就可以转换为价值最大
题目大意:给你一个背包体积大小为n,有m个物品,任选物品放入背包使背包剩余体积最少。
题目思路:转换为01背包求解,物品体积和价值等价,问题要使剩余空间最少,就可以转换为价值最大
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <cstring> #include <stack> #include <cctype> #include <queue> #include <string> #include <vector> #include <set> #include <map> #include <climits> #define lson root<<1,l,mid #define rson root<<1|1,mid+1,r #define fi first #define se second #define ping(x,y) ((x-y)*(x-y)) #define mst(x,y) memset(x,y,sizeof(x)) #define mcp(x,y) memcpy(x,y,sizeof(y)) using namespace std; #define gamma 0.5772156649015328606065120 #define MOD 1000000007 #define inf 0x3f3f3f3f #define N 1000005 #define maxn 100005 typedef pair<int,int> PII; typedef long long LL; int n,m,ans; int a[50]; int dp[20005]; int main(){ int i,j; scanf("%d%d",&n,&m); for(i=1;i<=m;++i)scanf("%d",&a[i]); for(i=1;i<=m;++i){ for(j=n;j>=a[i];--j) dp[j]=max(dp[j],dp[j-a[i]]+a[i]); } printf("%d\n",n-dp ); return 0; }
相关文章推荐
- 仿微信,录制音频并发送功能
- 手把手教你做蓝牙聊天应用(三)-获取要连接的设备
- ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程
- PHP-SplDoublyLinkedList
- LWP::UserAgent - Web user agent class Web 用户agent 类:
- 网页弹出qq聊天窗口
- 当猪飞起来:也谈创业初期商业模式问题
- tomcat开发的web项目部署到weblogic注意事项
- 【Python学习笔记】面向对象编程:类和实例
- eclipse opencv 环境配置
- Unable to open service Tomcat解决方法
- 恭喜自己成为CSDN博客准专家
- Java面试宝典 HTML&js&ajax&数据库
- NFS 错误的几个原因整理
- 深入浅出JMS之ActiveMQ简单的HelloWorld实例
- Mysql常见的错误代码
- 如何 设置多个 IP
- Java NIO(一)
- 纯CSS生成下拉菜单三角形
- 互联网场景下闪存优化测试和应用