BNUOJ 3869 Buying Hay

来源:互联网 发布:泰山石敢当 知乎 编辑:程序博客网 时间:2024/05/14 20:32

完全背包,不过在最优值的选取上稍微有些不同。

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int dp[56000];int main(){    int n,h,mh,i,j,w[100],v[100];    memset(dp,0x7f,sizeof(dp));    scanf("%d%d",&n,&h);    for (i=0; i<n; i++)    {        scanf("%d%d",v+i,w+i);    }    dp[0]=0;    for (i=0; i<n; i++)    {        for (j=v[i]; j<=h+5000; j++)        {            if (dp[j] >= dp[j-v[i]]+w[i])                dp[j]=dp[j-v[i]]+w[i];        }    }    for (i=h+1; i<=h+5000; i++)    {        dp[h]=dp[h]>dp[i]?dp[i]:dp[h];    }    printf("%d\n",dp[h]);}


原创粉丝点击