【DP】HDU 1114
HDU 1144 Piggy-Bank 
题意:有这么个存钱罐,给你空的时候重量和满的时候的重量,再给你N中类型的硬币(给出N种硬币总数量和总重量,可多次使用),问你怎样恰好填满存钱罐,而让填入的硬币数量最少。 
思路:完全背包,求最少填入硬币数量,要把dp数组全部填充为INF,求min,注意结果要恰好填满。
dp[j]= min(dp[j],dp[j-w[i]]+v[i])(dp[j]代表当前步,所用硬币最小数目)
/**
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.
**/
#include <cstdio>
#include <cstring>
#include <utility>
#include <algorithm>
using namespace std;
int const INF = 0x3f3f3f3f;
int E,F,N;
int dp[10005];
pair<int ,int >coin[505];
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        memset(dp,INF,sizeof(dp));
        scanf("%d%d%d",&E,&F,&N);
        int last = F-E;
        for(int i=0;i<N;i++){
            scanf("%d%d",&coin[i].first,&coin[i].second);
        }
        dp[0] = 0; //注意这里dp[0]要赋值为0
        for(int i=0;i<N;i++){
            for(int j=coin[i].second;j<=last;j++){
                    dp[j] = min(dp[j],dp[j-coin[i].second]+coin[i].first);
            }
        }
        if(dp[last]!=INF)
            printf("The minimum amount of money in the piggy-bank is %d.\n",dp[last]);
        else printf("This is impossible.\n");
    }
    return 0;
}
【DP】HDU 1114的更多相关文章
- 【dp】HDU 1421 搬寝室
		
http://acm.hdu.edu.cn/showproblem.php?pid=1421 [题意] 给定n个数,要从n个数中选择k个二元组{x,y},最小化sum{(x-y)^2} 2<=2 ...
 - 【DP】HDU 1260
		
HDU 1260 Tickets 题意:有N个人要买票,你可以一个一个人卖票,时间分别为Xs,也可以相邻两个人一起卖票,时间为Ys,从早上八点开始卖票,问你何时最早将N个人的票卖完. 思路:解决情况是 ...
 - 【DP】HDU 1176
		
HDU 1176 免费馅饼 题意:中文题目不解释. 思路:因为是从中间出发所以思路卡了许久,还在之前做了道HIHO入门的题.能想到的点,从时间思考,然后初始化1s的时候,4,5,6,的数值要特别赋值. ...
 - 【DP】HDU 1087
		
HDU 1078 Super Jumping! Jumping! Jumping! 题意: 有这么个游戏,从start到end(自己决定在哪停下来)连续跳圈,中间不能空一个圈不跳,圈里的数字必须比你上 ...
 - HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】
		
HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
 - Kattis - honey【DP】
		
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
 - HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】
		
HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...
 - HDOJ 1501 Zipper 【DP】【DFS+剪枝】
		
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
 - HDOJ 1257 最少拦截系统 【DP】
		
HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
 
随机推荐
- python 面向对象(类)
			
面向对象,即是将具备某种共性的事物抽象成一个类(模板),然后再根据类来创建实例对象进行具体的使用. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写, ...
 - TCP中的RST复位信号
			
TCP中的RST复位信号 在TCP协议中RST表示复位,用来关闭异常的连接,在TCP的设计中它是不可或缺的. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包.而接收 ...
 - Spring3.0目录
			
(1)Spring 入门知识 (2)IoC/DI基本思想的演变 (3)深入理解IoC/DI (4)Spring的简单demo
 - C# 读取excel日期时获取到数字转换成日期
			
string strDate= DateTime.FromOADate(Convert.ToInt32(data[i][7])).ToString("d"); strDate= D ...
 - LYDSY模拟赛day2 Dash Speed
			
/* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<< ...
 - Android高手速成--第三部分 优秀项目
			
主要介绍那些Android还不错的完整项目,目前包含的项目主要依据是项目有意思或项目分层规范比较好.Linux项目地址:https://github.com/torvalds/linuxAndroid ...
 - 妈妈再也不用担心别人问我是否真正用过redis了
			
1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...
 - python多线程学习记录
			
1.多线程的创建 import threading t = t.theading.Thread(target, args--) t.SetDeamon(True)//设置为守护进程 t.start() ...
 - ICMP的应用--Traceroute
			
Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具.前面说到,尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器.所以 ...
 - JavaScript方法
			
1.hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.isPrototype ...