2014 图灵杯 问题 H: Fill The Bag

来源:互联网 发布:字母哥身体数据 编辑:程序博客网 时间:2024/05/29 23:43


问题 H: Fill The Bag

时间限制: 2 Sec  内存限制: 64 MB
提交: 567  解决: 49
[提交][状态][讨论版]

题目描述

一次yyf和cq相约去北京比赛,但是想带的东西太多,于是他们决定从要带的东西当中选取一些使得背包尽可能的装满,现在你已经知道了背包的容量和每件物品的体积,你能预计出背包最小的剩余空间吗?

输入

第一行为背包的容量v,接下来的一行为物品的个数n,接下来的n行为每件物品的体积

v≤100000,n≤25

输出

背包最少剩余的空间

样例输入

4168462910

样例输出

2


题解:标准简单01背包问题。


AC代码:

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<map>#include<queue>#include<string>using namespace std; int dp[100005];int a[50];int main(){    int v,n;    while(cin>>v){        cin>>n;        for(int i=1;i<=n;i++)            cin>>a[i];        for(int i=1;i<=n;i++){            for(int j=v;j>=a[i];j--){                dp[j]=max(dp[j],dp[j-a[i]]+a[i]);            }        }        cout<<v-dp[v]<<endl;    }    return 0;}


0 0
原创粉丝点击