luogu 1049

体积和价值设为相等做一遍01背包。

然后输出v-f[v]即可。

#include"cstdio"
#include"cctype"
#include"algorithm"
using namespace std;
int read()
{
    int c,x=0; while(!isdigit(c=getchar()));
    while(x=x*10+c-'0',isdigit(c=getchar()));
    return x;
}
int f[20001];
int main()
{
    int v=read(),n=read();
    while(n--)
    {
        int a=read();
        for(int j=v; j>=a; j--) f[j]=max(f[j-a]+a,f[j]);
    }
    printf("%d",v-f[v]);
    return 0;
}

 

posted @ 2018-01-24 11:37  TrassBlose  阅读(103)  评论(0编辑  收藏  举报