HDUOJ---Piggy-Bank
Piggy-Bank
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9768 Accepted Submission(s): 4911
Problem Description
Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behind is simple. Whenever some ACM member has any small money, he takes all the coins and throws them into a piggy-bank. You know that this process is irreversible, the coins cannot be removed without breaking the pig. After a sufficiently long time, there should be enough cash in the piggy-bank to pay everything that needs to be paid. But there is a big problem with piggy-banks. It is not possible to determine how much money is inside. So we might break the pig into pieces only to find out that there is not enough money. Clearly, we want to avoid this unpleasant situation. The only possibility is to weigh the piggy-bank and try to guess how many coins are inside. Assume that we are able to determine the weight of the pig exactly and that we know the weights of all coins of a given currency. Then there is some minimum amount of money in the piggy-bank that we can guarantee. Your task is to find out this worst case and determine the minimum amount of cash inside the piggy-bank. We need your help. No more prematurely broken pigs!
Input
The input consists of T test cases. The number of them (T) is given on the first line of the input file. Each test case begins with a line containing two integers E and F. They indicate the weight of an empty pig and of the pig filled with coins. Both weights are given in grams. No pig will weigh more than 10 kg, that means 1 <= E <= F <= 10000. On the second line of each test case, there is an integer number N (1 <= N <= 500) that gives the number of various coins used in the given currency. Following this are exactly N lines, each specifying one coin type. These lines contain two integers each, Pand W (1 <= P <= 50000, 1 <= W <=10000). P is the value of the coin in monetary units, W is it's weight in grams.
Output
Print exactly one line of output for each test case. The line must contain the sentence "The minimum amount of money in the piggy-bank is X." where X is the minimum amount of money that can be achieved using coins with the given total weight. If the weight cannot be reached exactly, print a line "This is impossible.".
Sample Input
3 10 110 2 1 1 30 50 10 110 2 1 1 50 30 1 6 2 10 3 20 4
Sample Output
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.
Source
完全背包
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 const int maxn=10005;
5 const int inf=-0x3f3f3f3f;
6 int dp[maxn],coin[501],weight[501];
7 int main()
8 {
9 int i,j,n;
10 int test,low,high,cnt;
11 scanf("%d",&test);
12 while(test--)
13 {
14 scanf("%d%d",&low,&high);
15 cnt=high-low;
16 scanf("%d",&n);
17 for(i=0;i<n;i++)
18 scanf("%d%d",&coin[i],&weight[i]);
19 /*for(i=1;i<maxn;i++)
20 dp[i]=inf;*/
21 memset(dp,-1,sizeof(dp));
22 dp[0]=0;
23 for(i=0;i<n;i++)
24 {
25 for(j=weight[i];j<=cnt;j++)
26 {
27 if(dp[j-weight[i]]>-1&&(dp[j]==-1||dp[j]>(dp[j-weight[i]]+coin[i])))
28 dp[j]=dp[j-weight[i]]+coin[i];
29 }
30 }
31 if(dp[cnt]==-1)
32 printf("This is impossible.n");
33 else
34 printf("The minimum amount of money in the piggy-bank is %d.n",dp[cnt]);
35 }
36 return 0;
37 }
- 如何使用golang实现操作键盘按键
- 黑科技:程序员如何打造属于自己的分体键盘
- Go语言实现socket实例
- go语言实现sqrt的方法
- Go语言实现set
- Docker新手入门实战教程
- Python远程控制模块paramiko遇到的问题及解决记录
- Windows下bat批处理脚本使用telnet批量检测远程端口小记
- WordPress集成PHP缩略图,并开启Nginx缓存的方法
- 分享几个WordPress本地缓存gravatar评论头像的方案
- Linux下的mongodb服务脚本,以备不时之需
- WordPress发布文章主动推送到百度,加快收录保护原创
- Nginx开启fastcgi_cache缓存加速,支持html伪静态页面
- Go-指针、传值与传引用、垃圾回收
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 04 . Mysql主从复制和Mycat读写分离
- 02 . Python之数据类型
- 05 . k8s实战之部署PHP/JAVA网站
- 拖不得了,Android11真的来了,最全适配实践指南奉上
- 03 . Python入门之运算符
- 04 . Python入门之条件语句
- vue-element的select下拉框赋值
- 女儿拿着小天才电话手表问我App启动流程
- 数据库三问—快手真题
- 新人手册系列:思考篇-稳定性&大促保障
- RecycleView三问—腾讯真题
- css文字底部阴影效果
- 04 . kubernetes资源清单YAML入门
- 05 . Python入门值循环语句
- Constraintlayout约束布局三问