装箱问题 vijos

来源:互联网 发布:淘宝退货率高的影响 编辑:程序博客网 时间:2024/05/20 14:41

描述

有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从 n 个物品中,任取若千个装入箱内,使箱子的剩余空间为最小。

格式

输入格式

第一行,一个整数,表示箱子容量;
第二行,一个整数,表示有n个物品;
接下来n行,分别表示这n个物品的各自体积。

输出格式

一个整数,表示箱子剩余空间。

样例1

样例输入1

2468312797
Copy

样例输出1

0
Copy

限制

每个测试点1s

来源

noip2001普及组第四题


Solution:

#include<iostream>using namespace std;const int maxn=20010;int f[maxn];int v[maxn];int main() {int m,n;cin>>m>>n;int i,j;for (i=1; i<=n; i++) {cin>>v[i];}for (i=1; i<=n; i++) {for (j=m; j>=v[i]; j--) {if (f[j]<f[j-v[i]]+v[i]) {f[j]=f[j-v[i]]+v[i];}}}cout<<m-f[m]<<endl;return 0;}