首页 > 学院 > 开发设计 > 正文

HDU 1114 Piggy-Bank(完全背包)

2019-11-08 01:41:49
字体:
来源:转载
供稿:网友
/*背包dpF - Piggy-Bank时间: 2017/02/20题意:装满背包,但要求价值最低的完全背包题解:dp[i][j] 表示在背包大小为j中装前i个物品最优的价值*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define N 1010#define INF 0x3f3f3f3fint num[10001],w[500],v[500];int main(){    int n,m,e,f,t;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&e,&f);        m=f-e;        scanf("%d",&n);        for(int i=0;i<n;i++)            scanf("%d%d",&v[i],&w[i]);        num[0] = 0;        for(int i=1;i<=m;i++)            num[i] = -1;        for(int i=0;i<n;i++)        {            for(int j=w[i];j<=m;j++)            {                if(num[j-w[i]]!=-1 && num[j]!=-1)                {                    if(num[j-w[i]]+v[i]<num[j])                        num[j]=num[j-w[i]]+v[i];                }                else if(num[j-w[i]]!=-1 && num[j]==-1)                    num[j]=num[j-w[i]]+v[i];            }        }        if(num[m]!=-1)            PRintf("The minimum amount of money in the piggy-bank is %d./n",num[m]);        else            printf("This is impossible./n");    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表