zoukankan      html  css  js  c++  java
  • hdu -1114(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114

    思路:求出存钱罐装全部装满情况下硬币的最小数量,即求出硬币的最小价值。转换为最小背包的问题。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int INF = 500500;
    int dp[INF],val[INF],we[INF];
    int main(void)
    {
        int t,n,i,j,m,st,ed,tp;
        cin>>t;
        while(t--)
        {
            cin>>st>>ed;
            cin>>n;
            tp=ed-st;
            for(i=0;i<n;i++) cin>>val[i]>>we[i];
            memset(dp,INF,sizeof(dp));
            dp[0]=0;
            for(i=0;i<n;i++)
            {
                for(j=we[i];j<=tp;j++)
                {
                    dp[j]=min(dp[j],dp[j-we[i]]+val[i]);
                }
            }
            //cout<<"--"<<num[tp]<<endl;
            if(dp[tp]!=dp[500100]) printf("The minimum amount of money in the piggy-bank is %d.
    ",dp[tp]);
            else printf("This is impossible.
    ");
        }
        return 0;
    }
  • 相关阅读:
    UVA
    UVA
    UVA
    UVA
    NLP介绍
    新建Springboot项目
    添加ssh密钥
    git 错误合集
    Git入门操作
    Hadoop MapReduce
  • 原文地址:https://www.cnblogs.com/2018zxy/p/9836614.html
Copyright © 2011-2022 走看看