poj 3628 01 背包

来源:互联网 发布:js获取translatey的值 编辑:程序博客网 时间:2024/05/02 04:26

题意: 给一群牛 求出不小于书架最小的高度  然后和书架做差 


#include <iostream>#include <cstdio>#include <cstring>using namespace std;int dp[20000000], v[24];int n, m, sum;void onetwopack(int v, int jz){    for(int i = sum; i >= v; i--)        dp[i] = max(dp[i], dp[i-v]+jz);}int main(){    while(scanf("%d%d", &n, &m) != EOF)    {        sum = 0;        for(int i = 0; i < n; i++)        {            scanf("%d", &v[i]);            sum += v[i];        }        for(int i = 0; i < n; i++) onetwopack(v[i], v[i]);        for(int i = m; i <= sum; i++)            if(dp[i] >= m)            {                printf("%d\n", dp[i]-m);                break;            }    }}