zoukankan      html  css  js  c++  java
  • hdu acm 1114 Piggy-Bank 解题报告

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

    题目意思:给出一个空的猪仔钱ang 的重量E,和一个装满钱的猪仔钱ang 的重量F你,实质上能装入得钱的重量就是F - E。接着有n 种币种,每个币种有两个属性刻画:面值 + 重量。问恰好装满(注意关键词: 恰好)后,需要的钱的最少数量所对应的钱是多少(有点拗口= =。)拿第一组数据来说,

      10 110

      2

      1 1

      30 50

         我们当然是用两张30 来填满这个只能装100重量的罐啦,如果都用面值为1的货币来装,就需要100张了,显然不够2张好啦。

         好啦,回归正题,这道题是完全背包的题目。初始化dp 数组的 INF 一定要好大好大~~~否则会....wa !

         有学过的应该都不陌生,如果也像我那样才刚接触,就可以看看dd 大牛(其实我也不知道是谁来滴)的 背包九讲

         或者队长给的:http://love-oriented.com/pack/pack2rc.pdf  (这人...不知道是不是dd 大牛)

         这个是我看得最懂的(反正我是比较笨啦):http://wenku.baidu.com/link?url=yHMBToaaKpk8mRFn0aCCcq02MTyCIjGQ8npyI-XDfkAvkLqNRKpxLkNnJf0s3l-XdZK99XwQZiEZ6hqxFt0WZbRMu3ZaNxdE-1o0ZI4ssq3

          还有一个很重要的地方,初始化!!注意是恰好装满,也就不能用 0 来初始化dp 数组,而要用 INF。(dd大牛是有写的,看了还是不太懂为什么这样)

         

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int maxn = 1e4 + 10;
     7 const int INF = 100000000;    // 这个INF一定要好大好大好大!!!!
     8 
     9 int w[maxn], v[maxn];
    10 int dp[maxn];
    11 
    12 int main()
    13 {
    14     int T, n, m, E, F;
    15     while (scanf("%d", &T) != EOF)
    16     {
    17         while (T--)
    18         {
    19             scanf("%d%d", &E, &F);
    20             int Maxweight = F - E;
    21             scanf("%d", &n);
    22             for (int i = 0; i < n; i++)
    23                 scanf("%d%d", &v[i], &w[i]);
    24             for (int i = 1; i <= Maxweight; i++)
    25                 dp[i] = INF;
    26             dp[0] = 0;
    27             for (int i = 0; i < n; i++)
    28             {
    29                 for (int j = w[i]; j <= Maxweight; j++)
    30                 {
    31                     dp[j] = min(dp[j], dp[j-w[i]]+v[i]);  // 选取币值最少的
    32                 }
    33             }
    34             if (dp[Maxweight] != INF)
    35                 printf("The minimum amount of money in the piggy-bank is %d.
    ", dp[Maxweight]);
    36             else
    37                 printf("This is impossible.
    ");
    38         }
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    AngularJS方法 —— angular.bind
    rails 部署 nginx + passenger
    查找并删除
    rails 网站跨域
    From Ruby array to JS array in Rails- 'quote'?
    rails 网站字体
    form_tag
    bundle install 老是中断,可以在gemfile里面把source换成taobao源,可以自动安装
    ruby 功力修炼
    bootstrap 移动自适应界面
  • 原文地址:https://www.cnblogs.com/windysai/p/3885084.html
Copyright © 2011-2022 走看看