D - 猪钱罐 HDU - 1114

在 ACM 能够开展之前,必须准备预算,并获得必要的财力支持。该活动的主要收入来自于 Irreversibly Bound Money (IBM)。思路很简单。任何时候,某位 ACM 会员有少量的钱时,他将所有的硬币投入到小猪储钱罐中。这个过程不可逆,因为只有把小猪储钱罐打碎才能取出硬币。在足够长的时间之后,小猪储钱罐中有了足够的现金,用于支付 ACM 活动所需的花费。

但是,小猪储钱罐存在一个大的问题,即无法确定其中有多少钱。因此,我们可能在打碎小猪储钱罐之后,发现里面的钱不够。显然,我们希望避免这种不愉快的情况。唯一的可能是,称一下小猪储钱罐的重量,并尝试猜测里面的有多少硬币。假定我们能够精确判断小猪储钱罐的重量,并且我们也知道给定币种的所有硬币的重量。那么,我们可以保证小猪储钱罐中最少有多少钱。

你的任务是找出最差的情形,即判断小猪储钱罐中的硬币最少有多少钱。我们需要你的帮助。不能再贸然打碎小猪储钱罐了!

输入
输入包含 T 组测试数据。输入文件的第一行,给出了 T 的值。

对于每组测试数据,第一行包含 E 和 F 两个整数,它们表示空的小猪储钱罐的重量,以及装有硬币的小猪储钱罐的重量。两个重量的计量单位都是 g (克)。小猪储钱罐的重量不会超过 10 kg (千克),即 1 <= E <= F <= 10000 。每组测试数据的第二行,有一个整数 N (1 <= N <= 500),提供了给定币种的不同硬币有多少种。接下来的 N 行,每行指定一种硬币类型,每行包含两个整数 P 和 W (1 <= P <= 50000,1 <= W <=10000)。P 是硬币的金额 (货币计量单位);W 是它的重量,以 g (克) 为计量单位。

输出
对于每组测试数据,打印一行输出。每行必须包含句子 “The minimum amount of money in the piggy-bank is X.” 其中,X 表示对于给定总重量的硬币,所能得到的最少金额。如果无法恰好得到给定的重量,则打印一行 “This is impossible.” 。

示例输入

3
10 110
2
1 1
30 50
10 110
2
1 1
50 30
1 6
2
10 3
20 4

示例输出

The minimum amount of money in the piggy-bank is 60.
The minimum amount of money in the piggy-bank is 100.
This is impossible.

完全背包问题,不过这次是求最少的硬币数量,所以主要是将dp数组初始化为正无穷,然后dp【0】=0,然后因为是完全背包,与01背包的差别就是第二层循环的j由倒序变成了正序,其他就一样

#include <iostream>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int p[505],w[505],dp[100005];
int main(){int i,j,e,f,t,n;cin >> t;while (t--){for(i=0;i<=100005;i++)dp[i]=INF;dp[0]=0;cin >> e >> f>>n;for(i=1;i<=n;i++)cin >> p[i] >> w[i];int weight=f-e;for(i=1;i<=n;i++)for(j=w[i];j<=weight;j++)dp[j]=min(dp[j],dp[j-w[i]]+p[i]);if(dp[weight]==INF)cout <<"This is impossible." <<endl;else cout <<"The minimum amount of money in the piggy-bank is "<<dp[weight]<<"."<<endl;}return 0;
}

D - 猪钱罐 HDU - 1114相关推荐

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

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

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

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

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

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

  4. HDU 1114 Piggy-Bank 猪仔储钱罐(完全背包)

    题意: 给定一个存钱罐中要存硬币,知道空罐的重量和欲装满的重量,是否能装入?若能,打印最小价值.(注:能装的硬币重量一定刚刚好,里面的总价值要达到最小) 输入: 包含了T个测试例子,在第一行给出.接下 ...

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

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

  6. HDU 1114 Piggy-Bank 简单DP

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

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

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

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

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

  9. HDU 1114 Piggy-Bank 存钱罐

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

最新文章

  1. inux php pdo mysql 扩展
  2. XPath基本概念(一)
  3. python io模块_python中的StringIO模块
  4. 武器化道路越走越远的无人机
  5. (原創) 标准的makefile写法 (C/C++)
  6. python批量下载网页文件-Python批量下载网页图片详细教程
  7. ORA-20000 exec dbms_space 错误
  8. 在URL上设置时间戳
  9. 计算机办公自动化考题,办公自动化试题(附答案).doc
  10. ZOJ - 1450 Minimal Circle HDU - 3007 Buried memory 最小圆覆盖模板 【随机函数】【增量法】
  11. 【日常小记】linux中强大且常用命令:find、grep
  12. [css] 如何做图片预览,如何放大一个图片?
  13. 【2016年第4期】研究(国家自然科学基金项目成果集萃)导读
  14. e会学中C语言课程考试答案,管理信息系统期末考试A试卷答案卷
  15. 若依集成knife4j实现swagger文档增强
  16. Siri 自动拨打 911、Google 建筛查网站、IBM 测药物成分,国际抗疫在行动!
  17. transaction缩写为什么是tx_TX Transaction locks常见的4种情况
  18. 《Visual Studio Code权威指南》读后总结
  19. 蒸汽管道图纸符号_供热循环系统“30问”(附管网图常见符号图例)
  20. android手机控制电视,类Siri语音控制技术 Android手机也能控制电视

热门文章

  1. [数据可视化] 漏斗图(Funnel Chart)
  2. bootstrap手机页面
  3. 定时启动和关闭指定程序的方法
  4. 【android】仿360手机卫士的简易设计思路及源码
  5. Map和multimap容器
  6. R语言 quantmod 下载股票代码 无法访问 雅虎的唯一解决方法
  7. 抖音电商的物流病,“极速达”能治吗?
  8. vue设置输入框输入长度_基于vue的限制输入框可输入字节数的解决方案
  9. 3.28百度暑期实习笔试
  10. 视觉SLAM十四讲作业练习(3)