背包问题1
2015-07-05 11:54
253 查看
背包问题1
Time Limit:1000MS Memory Limit:65536K
Description
一个背包容积为T(0<=T<=2000),现在有N(0<N<=1000)个物品,每个物品有一定体积V(1<=V<=5000)。从这N个物品中选取若干个装入背包内,使背包所剩的空间最小。请求出最小的剩余空间?
Input
第一行,空格间隔的两个整数T和N,分别表示背包的容积和物品的个数。
第二行,用空格间隔的N个整数,表示每个物品的体积。
Output
只有一行,一个整数,表示最小剩余的背包空间。
Sample Input
Sample Output
Time Limit:1000MS Memory Limit:65536K
Description
一个背包容积为T(0<=T<=2000),现在有N(0<N<=1000)个物品,每个物品有一定体积V(1<=V<=5000)。从这N个物品中选取若干个装入背包内,使背包所剩的空间最小。请求出最小的剩余空间?
Input
第一行,空格间隔的两个整数T和N,分别表示背包的容积和物品的个数。
第二行,用空格间隔的N个整数,表示每个物品的体积。
Output
只有一行,一个整数,表示最小剩余的背包空间。
Sample Input
30 4 15 8 13 6
Sample Output
1
#include <stdio.h> inline void _r(int& d) { char t=getchar();bool f=false; while(t<'0'||t>'9') {if(t=='-') f=true; t=getchar();} for(d=0;t<='9'&&t>='0';t=getchar()) d=d*10+t-'0'; if(f) d=-d; } inline void _o(int d) { int o[30],top=1; if(d==0){putchar('0');return ;} if(d<0) {putchar('-');d=-d;} while(d) { o[top++]=d%10; d/=10; } for(--top;top;--top) putchar('0'+o[top]); } bool f[2001]; int main() { int i,j,n,t,a; for(_r(t),_r(n),f[0]=1,i=1;i<=n;i++) for(_r(a),j=t; j>=a;j--) if(f[j-a])f[j]=1; for(i=t;!f[i];i--); _o(t-i); return 0; }
相关文章推荐
- 关于windows服务方面的一些问题
- 八皇后问题
- jQuery插件pagewalkthrough实现引导页效果
- 黑马程序员——Java基础--内部类总结
- 图像模式识别的方法
- spark 1.4 编译
- 关于C++中用两个迭代器方式初始化string的知识
- ImageLoaderMachO::doModInitFunctions crash问题
- Java-成员变量和局部变量
- 【NOI1997 Day2 T1】最佳游览
- AS 向导页面
- 比较不错的文章
- 最大连续子序列
- 将普通maven项目改成maven web项目
- 句法模式识别(两)-正规文法、上下文无关文法
- 一:MyBatis的整体设计
- dom 元素操作 增删改
- CUDA编程
- DG ora-ORA-16016错误
- 水池数目