HDU 1114(完全背包)

题意:给出小猪钱罐空时的重量E,满时的重量F,钱币的种类N,接下来N行,分别为p w,p为钱币价值,w为钱币重量,求钱罐中钱币的最小价值。

 

#include <cstring>
#include <cstdio>

int cost[509], weight[509];
int dp[10009];
#define MIN(a, b) ((a) > (b) ? (b) : (a))
#define INF 25000009
int main()
{
    int T, E, F, N, i, j, V;
    scanf("%d", &T);
    while (T--)
    {
        scanf("%d%d%d", &E, &F, &N);
        for (i = 0; i < N; ++i)
            scanf("%d%d", weight+i, cost+i);
        V = F - E;
        //memset(dp+1, -1, sizeof(int) * V);
        dp[0] = 0;
        for (i = 1; i <= V; ++i) dp[i] = INF;
        for (i = 0; i < N; ++i)
            for (j = cost[i]; j <= V; ++j)
                dp[j] = MIN(dp[j], dp[j-cost[i]] + weight[i]);
        if (dp[V] == INF)
            printf("This is impossible.\n");
        else printf("The minimum amount of money in the piggy-bank is %d.\n", dp[V]);
    }
    return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值