HDU 1114 Piggy-Bank (poj1384)
储钱罐
【题目描述】
今年的ACM比赛在xxx国举行,为了比赛的顺利进行,必须提前预算好需要的费用,以及费用的来源。费用的主要来源是只进不出的金钱。其实原理很简单,每当ACM成员有任何一点小钱,他们就会把这些钱全部投进储钱罐。你知道钱投进储钱罐后是无法再取出来的,除非你打碎储钱罐,而这是不允许的。经过一段足够长时间的积累,储钱罐中应该有足够的金钱来支付ACM比赛需要的一切费用。
储钱罐不允许打碎,我们也不能确定里面有多少钱,钱是否够用。不过,我们知道储钱罐以及每种硬币的重量,于是我们可以试着猜测里面有多少钱。为了保险起见,在已知重量的前提下,我们需要算出储钱罐中最少有多少钱(每种硬币可以使用多次,)。你能帮忙预算一下吗?
【输入】
第一行,两个正整数E和F,分别为空储钱罐的重量和装满硬币的储钱罐的重量(重量的单位是克,并且不会超过10公斤,即:1 <= E <= F <= 10000)。
第二行,有一个正整数n(1 <= N <= 500),为硬币的种类。
后面紧跟n行,每行为一种硬币类型,包含两个正整数p和w ,p为硬币的价值,w为硬币的重量,单位为克。(1 < = P < = 50000,1 < = W < = 10000)。
【输出】
输出只有一行,如果能求出符合要求的储蓄罐的最低金额,则输出该金额,否则输出“This is impossible.”。
【输入样例1】
10 110
2
1 1
30 50
【输出样例1】
60
【输入样例2】
10 110
2
1 1
50 30
【输出样例2】
100
【输入样例3】
1 6
2
10 3
20 4
【输出样例3】
This is impossible.
一句话题意:恰好装满容量为ff-e的背包,需要的最少硬币金额是多少?
分析:完全背包问题+恰好装满+最小值
f[i,j]:=min{f[i-1,j-K*w[i]]+K*p[i]}(k>=0)=min{f[i-1,j],f[i-1,j-K*w[i]]+K*p[i]}(k>=1)
f[i-1,j-K*w[i]]+K*p[i](K>=1)
=min{f[i-1,j], f[i-1,(j-w[i])-k*w[i]]+k*p[i]+p[i](K>=0)}
=min{ f[i-1,j], f[i,(j-w[i])+p[i]}
初始值(在没有任何物品可以放入背包时的合法状态):
f[0]=0; //容量为0的背包可能被价值为0的nothing“恰好装满”
f[1~n]=+∞ //其它容量的背包均没有合法的解,属于未定义的状态,本题又是求最小值,则初始值就应该是∞了。
const
maxm=;
maxnum=;
var
e,ff,n,m,t,i:longint;
p,w:array[..] of longint;
f:array[..]of longint;
procedure init;
var i:longint;
begin
// assign(input,'pig.in');reset(input); readln(e,ff);
m:=ff-e;
readln(n);
for i:= to n do readln(p[i],w[i]);
// close(input);
end;
procedure wqdp;
var i,j:longint;
begin
f[]:=;
for i:= to maxm do f[i]:=maxnum;
for i:= to n do
for j:= to m do
if (j>=w[i]) and(f[j]>f[j-w[i]]+p[i]) then
f[j]:=f[j-w[i]]+p[i];
end;
procedure print;
begin
if f[m]=maxnum then writeln('This is impossible.')
else writeln('The minimum amount of money in the piggy-bank is ',f[m],'.');
end;
begin
// readln(t);
// for i:= to t do
// begin
init;
wqdp;
print;
// end;
end.
HDU 1114 Piggy-Bank (poj1384)的更多相关文章
- Piggy-Bank(HDU 1114)背包的一些基本变形
Piggy-Bank HDU 1114 初始化的细节问题: 因为要求恰好装满!! 所以初始化要注意: 初始化时除了F[0]为0,其它F[1..V]均设为−∞. 又这个题目是求最小价值: 则就是初始化 ...
- 怒刷DP之 HDU 1114
Piggy-Bank Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- hdu 1114 dp动规 Piggy-Bank
Piggy-Bank Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)
HDOJ(HDU).1114 Piggy-Bank (DP 完全背包) 题意分析 裸的完全背包 代码总览 #include <iostream> #include <cstdio&g ...
- HDU 1114 Piggy-Bank(一维背包)
题目地址:HDU 1114 把dp[0]初始化为0,其它的初始化为INF.这样就能保证最后的结果一定是满的,即一定是从0慢慢的加上来的. 代码例如以下: #include <algorithm& ...
- HDU 1114 完全背包 HDU 2191 多重背包
HDU 1114 Piggy-Bank 完全背包问题. 想想我们01背包是逆序遍历是为了保证什么? 保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗 means ...
- --hdu 1114 Piggy-Bank(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 AC code: #include<bits/stdc++.h> using nam ...
- [HDU 1114] Piggy-Bank (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 简单完全背包,不多说. #include <cstdio> #include < ...
- HDU 1114 Piggy-Bank(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:根据储钱罐的重量,求出里面钱最少有多少.给定储钱罐的初始重量,装硬币后重量,和每个对应 ...
随机推荐
- Canu Parameter Reference(canu参数介绍)
链接:Canu Parameter Reference To get the most up-to-date options, run canu -options The default values ...
- CLGeocoder Error Domain=kCLErrorDomain Code=2
使用CLGeocoder解码地址时,遇到错误 Error Domain=kCLErrorDomain Code=2 代码: #pragma mark 跟踪定位代理方法,每次位置发生变化即会执行(只要定 ...
- VC++导入导出类
一.导出类 VC++中导出类很简单,下面列出了两个等价的方法: 方法1: class __declspec(dllexport) CTest { public: int m_nValue ...
- ActiveX控件(ATL篇)
目录 第1章 VC++6.0创建 2 1.1 目标 2 1.2 创建项目 2 1.3 增加COM类 4 1.4 属性 7 1.5 事件 8 1.6 实现连接点 ...
- 在腾讯云上创建您的SQL Cluster(1)
版权声明:本文由李斯达原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/247 来源:腾云阁 https://www.qclo ...
- Cmd Markdown 简明语法手册
『Cmd 技术渲染的沙箱页面,点击此处编写自己的文档』 Cmd Markdown 简明语法手册 标签: Cmd-Markdown 1. 斜体和粗体 使用 * 和 ** 表示斜体和粗体. 示例: 这是 ...
- 解决点击a标签返回页面顶部的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C++中静态数据成员
类的静态成员不能由类的构造函数来初始化.因为即使不存在类的任何对象时,类的静态成员依然存在并且可以被使用.类的静态成员也不能访问任何类的非静态成员. 类名和类对象都可以直接调用静态数据成员.因为静态数 ...
- poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 43507 Accepted: 12693 ...
- HDU 2602(01背包)
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...