题意:

  给定一个存钱罐中要存硬币,知道空罐的重量和欲装满的重量,是否能装入?若能,打印最小价值。(注:能装的硬币重量一定刚刚好,里面的总价值要达到最小)

输入:

  包含了T个测试例子,在第一行给出。接下来有T个例子,每个例子第一行包括两整数E和F,分别代表空罐的重量和装满钱的重量,单位都为克。 1 <= E <= F <= 10000. 第二行包含了一个整数N,代表了硬币的种类。(1 <= N <= 500)接下来N行是N种硬币的信息,每行有两个整数P和W,分别代表价值和重量,单位是克。

输出:每例输出一行,若能装入,打印The minimum amount of money in the piggy-bank is X. 其中X是钱的总额。若不能装入,打印 This is impossible.

思路:

  和完全背包一样,不同的是硬币的重量要恰好,不能多或少,总价值要最小,这与完全背包问题相反。需要特别地处理这两个问题,重量要恰好,那么在更新dp的时候要保证这一点,总价要最小,那么在比较的时候要用min而不是max了。

 1 #include <iostream>
 2 #define MAX 0xfffffff
 3 using namespace std;
 4 //要求:1、刚好装满    2、总价值最小
 5 int value[501];
 6 int weight[501];
 7 int dp[10010];
 8 int min(int a,int b)
 9 {
10     return a<b?a:b;
11 }
12 int cal(int v,int n)    //空间、种类
13 {
14     int i,j;
15     dp[0]=0;
16     for(i=1;i<=v;i++)
17         dp[i]=MAX;
18     for(i=1;i<=n;i++)
19         for(j=weight[i];j<=v;j++)
20         {
21                 dp[j]=min( dp[j] , dp[j-weight[i]] + value[i] );
22         }
23     return dp[v];
24 }
25 void main()
26 {
27     int T;
28     scanf("%d",&T);
29     int E,F,N,ans;
30     while(T--)
31     {
32         int i;
33         scanf("%d%d",&E,&F);    //空罐、满罐
34         scanf("%d",&N);            //多少种硬币
35         for(i=1;i<=N;i++)
36         {
37             scanf("%d%d",&value[i],&weight[i]);    //价值、重量
38         }
39         ans=cal(F-E,N);
40         if(ans==MAX)
41             printf("This is impossible.\n");
42         else
43             printf("The minimum amount of money in the piggy-bank is %d.\n",ans);
44     }
45 }

1114

转载于:https://www.cnblogs.com/xcw0754/p/4231338.html

HDU 1114 Piggy-Bank 猪仔储钱罐(完全背包)相关推荐

  1. 【强行点出机械师天赋,修复无脸男储钱罐】

    事情是这样的,前两天在往储钱罐里投币的时候,突然有一个很大胆的想法"如果把它电池拔了会怎样?"     en ,年轻人有想法就要勇敢的去尝试,所以就悲剧了.... 这就是拔了电池后 ...

  2. D - 猪钱罐 HDU - 1114

    D - 猪钱罐 HDU - 1114 在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持.该活动的主要收入来自于 Irreversibly Bound Money (IBM).思路很简单.任 ...

  3. Piggy-Bank HDU - 1114(多重背包)

    在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持.该活动的主要收入来自于 Irreversibly Bound Money (IBM).思路很简单.任何时候,某位 ACM 会员有少量的钱时 ...

  4. HDU 1114 iggy-Bank(完全背包)

    水 给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量 要求出重量最少能装满钱罐时的最大价值 1 #include<iostream> 2 #includ ...

  5. 【微电网优化】基于粒子群求解CHP机组、气网、电网、储热罐和电锅炉微电网优化模型附matlab代码

    1 简介 近年来随着全球性的环境污染问题与能源危机日益突出,人们的环保意识与节能意识不断提高,使得微电网成为了电力系统领域的研究热点之一.相对于传统的大电网,微电网具有自身的特点和优势,发电过程产生的 ...

  6. HDU 1114(没有变形的完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 Piggy-Bank Time Limit: 2000/1000 MS (Java/Others ...

  7. HDU 1114 Piggy-Bank 简单DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:完全背包问题,不过这次是求的最小值. 解题思路:首先是初始化问题,其次就是状态转移的时 ...

  8. HDU 1114:Piggy-Bank ← 完全背包问题

    [题目概述] 给定一个数T,表示T个样例. 针对每个样例,第一行两个值,分别为小猪存钱罐空时的重量E,满时的重量F. 第二行一个值,表示小猪存钱罐中钱币的种类N. 接下来N行,每行两个值,分别某种钱币 ...

  9. HDU 1114—Piggy-Bank(储蓄罐)(完全背包)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意 开始时输入T,代表一共有T个样例. 对于每一个样例,第一行给出E与F(1<=E,F< ...

最新文章

  1. 2012-2013年下学期计划
  2. 清华毕业生开发新特效编程语言:99 行代码背后 20 多年的故事...
  3. 安川机器人焊枪切换设定方法_安川机器人参数更改方法
  4. 检索COM类工厂组件的CLSID 80040154(不容易啊!!) 80040154.
  5. 让开发人员变平庸的八个习惯,看看你中了几条
  6. Android和Linux kernel发展史
  7. 使用Elizabeth为您的应用程序生成随机数据
  8. android gridview添加标题,android gridview布局添加多個title
  9. 【python】Tkinter窗口可视化(二)
  10. ARC077C pushpush 递推
  11. C++封装Mysql数据库
  12. 网吧服务器系统安装,网吧服务器和客户端安装教程
  13. 二牛频道-收集分享各类不花钱的各类绿色优质软件-互联网资源分享
  14. 金融类自定义View(二)--股票分时图
  15. RSA+AES混合加密实例
  16. android短信接收流程
  17. android系统证书导入工具,添加Fiddler/Mitmproxy证书为安卓系统证书
  18. win10时间不准_安卓机时间突然变慢10分钟?移动发布回应
  19. java 遍历二叉树_java实现二叉树遍历的三种方式
  20. 2022年最新前端面试题、高频面试题、面试题总结

热门文章

  1. office办公软件插件推荐word插件excel插件ppt插件
  2. 马化腾:通向互联网未来的七个路标
  3. 用户画像标签数据存储之Hive存储
  4. 开发电脑用 Windows 还是 Mac
  5. python匿名函数调用_(Python) 函数、匿名函数
  6. 如何修改MySQL监听IP地址
  7. formality软件使用教程
  8. UE:无法解析的外部符号 “public: __cdecl FKey::~FKey(void)“ (??1FKey@@QEAA@XZ)
  9. 计算机关闭自带杀毒,Win10专业版系统中关闭自带杀毒软件操作方法
  10. 陌陌发布新版 增加阅后即焚和短视频功能