zoukankan      html  css  js  c++  java
  • HDU 1114 【DP】

    题意:

    给你空钱袋的质量和装满钱的钱袋的质量。

    给你先行的n种货币的面值和质量。

    问钱包里的钱最少是多少。

    如果质量不可行,输出impossible。

    思路:

    完全背包。

    屌丝有个地方没想通,就是如何确定是否是impossible。

    其实一开始先初始化成inf,然后只要可行的点都会更新dp数组。所以最后如果仍是inf那么代表这个质量不可行。

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    int w[600],p[600];
    const int inf=0x3f3f3f3f;
    int dp[10005];
    int main()
    {
        int t,n,tar;
        scanf("%d",&t);
        for(int tt=1;tt<=t;tt++)
        {
            int a,b,minn=inf;
            scanf("%d%d%d",&a,&b,&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&p[i],&w[i]);
                minn=min(minn,w[i]);
            }
            tar=b-a;
            for(int i=1;i<=tar;i++)
            {
                dp[i]=inf;
            }
            if(tar<0)
            {
                printf("This is impossible.
    ");
                continue;
            }
            else if(tar==0)
            {
                printf("The minimum amount of money in the piggy-bank is 0.
    ");
                continue;
            }
            dp[0]=0;
            for(int i=1;i<=n;i++)
            {
                for(int j=w[i];j<=tar;j++)
                {
                    dp[j]=min(dp[j-w[i]]+p[i],dp[j]);
                }
            }
            if(dp[tar]==inf)
            {
                printf("This is impossible.
    ");
            }
            else
            {
                printf("The minimum amount of money in the piggy-bank is %d.
    ",dp[tar]);
            }
        }
    }
  • 相关阅读:
    ajax跨域名
    js(鼠标键盘拖动事件)
    关于servlet转发和重新定向
    ztree的异步加载
    关于三层(dao,serviece,servlet)
    serclet监听器
    servlet(2)response常用方法
    servlet(1)request常用方法
    .post
    A1146 Topological Order
  • 原文地址:https://www.cnblogs.com/tun117/p/4899141.html
Copyright © 2011-2022 走看看