码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1114 Piggy-Bank

时间:2019-10-22 15:04:06      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:printf   方便   最小值   bsp   minimum   ini   color   mon   完全   

这题是完全背包啊。

与众不同的是它是用背包取的最小值,所以边界条件有讲究:dp[0]=0,其他的赋值为inf(无穷大),这样方便取min操作。

 

#include<bits/stdc++.h>
using namespace std;
const int inf=0x3fffff,N=510;
int dp[N*20],v[N],w[N];
int main()
{
    int t,n,e,f,m;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&e,&f);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
          scanf("%d%d",&v[i],&w[i]);
        m=f-e;
        for(int i=1;i<=m;i++)
            dp[i]=inf;
        dp[0]=0;
        for(int i=1;i<=n;i++)
            for(int j=w[i];j<=m;j++)
                dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
        if(dp[m]<inf)
            printf("The minimum amount of money in the piggy-bank is %d.\n",dp[m]);
        else
            printf("This is impossible.\n");
    }
    return 0;
}

 

HDU 1114 Piggy-Bank

标签:printf   方便   最小值   bsp   minimum   ini   color   mon   完全   

原文地址:https://www.cnblogs.com/Siv0106/p/11719259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!