Piggy-Bank(HDU 1114)背包的一些基本变形
Piggy-Bank HDU 1114
初始化的细节问题:
因为要求恰好装满!!
所以初始化要注意:
初始化时除了F[0]为0,其它F[1..V]均设为−∞。
又这个题目是求最小价值:
则就是初始化时除了F[0]为0,其它F[1..V]均设为∞。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int inf=1000005;
int a[],b[],dp[];
int main()
{
int t,n,n1,m,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&n1);
n=n1-n;
scanf("%d",&m);
for(i=;i<m;i++)
scanf("%d%d",&a[i],&b[i]);
memset(dp,inf,sizeof(dp));
dp[]=;
for(i=;i<m;i++)
for(j=b[i];j<=n;j++)
dp[j]=min(dp[j],dp[j-b[i]]+a[i]);
if(dp[n]<=inf)
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[n]);
else
printf("This is impossible.\n");
}
return ;
}
还有:
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int inf=1000005;
int a[],b[],dp[];
int main()
{
int t,n,n1,m,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&n1);
n=n1-n;
scanf("%d",&m);
for(i=;i<m;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=1;i<=n;i++)
dp[i]=inf;
dp[]=;
for(i=;i<m;i++)
for(j=b[i];j<=n;j++)
dp[j]=min(dp[j],dp[j-b[i]]+a[i]);
if(dp[n]!=inf)
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[n]);
else
printf("This is impossible.\n");
}
return ;
}
Piggy-Bank(HDU 1114)背包的一些基本变形的更多相关文章
- HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)
HDOJ(HDU).1114 Piggy-Bank (DP 完全背包) 题意分析 裸的完全背包 代码总览 #include <iostream> #include <cstdio&g ...
- HDU 1114 完全背包 HDU 2191 多重背包
HDU 1114 Piggy-Bank 完全背包问题. 想想我们01背包是逆序遍历是为了保证什么? 保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗 means ...
- HDU 1114 Piggy-Bank(一维背包)
题目地址:HDU 1114 把dp[0]初始化为0,其它的初始化为INF.这样就能保证最后的结果一定是满的,即一定是从0慢慢的加上来的. 代码例如以下: #include <algorithm& ...
- hdu 1114 dp动规 Piggy-Bank
Piggy-Bank Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- 怒刷DP之 HDU 1114
Piggy-Bank Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDU 1114 Piggy-Bank(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:根据储钱罐的重量,求出里面钱最少有多少.给定储钱罐的初始重量,装硬币后重量,和每个对应 ...
- (完全背包) Piggy-Bank (hdu 1114)
题目大意: 告诉你钱罐的初始重量和装满的重量, 你可以得到这个钱罐可以存放钱币的重量,下面有 n 种钱币, n 组, 每组告诉你这种金币的价值和它的重量,问你是否可以将这个钱 ...
- hdu -1114(完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 思路:求出存钱罐装全部装满情况下硬币的最小数量,即求出硬币的最小价值.转换为最小背包的问题. # ...
- HDU 1114(没有变形的完全背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 Piggy-Bank Time Limit: 2000/1000 MS (Java/Others ...
随机推荐
- 使用GDB进行调试
下面是几篇非常好的GDB使用指南: http://www.cs.cmu.edu/~gilpin/tutorial/ http://oss.org.cn/ossdocs/gnu/linux/gdb.ht ...
- PHP连接SQLServer
连接前配置系统: 1.检查文件 php5.2.5/ntwdblib.dll 默认下面有一个,不能连接再替换. 下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: http ...
- git使用命令, 特别:git checkout -b a 与 git branch a区别
摘自: https://my.oschina.net/u/587974/blog/74341 创建分支: $ git branch mybranch 切换分支: $ git checkout mybr ...
- Android IOS WebRTC 音视频开发总结(六八)-- Google: What's next for WebRTC
本文主要从用户,公司和技术角度分析美女视频直播这个行业,文章最早发表在我们的微信公众号上,支持原创,详见这里, 欢迎关注微信公众号blackerteam,更多详见www.rtc.help Justio ...
- C# 集合与泛型
一.古典集合方式 在C#2.0的时候集合主要通过两种方式实现: 1.使用ArrayList实现 新建ArrayList,然后将所有对象放入该数组中,简单直接,但缺点是该数组什么类型的元素都能接收,在实 ...
- 深入理解js——执行上下文
什么是"执行上下文"?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常.第二句.第三句输出都是undefined,说明浏览器在执行console.log(a)时,已经知道 ...
- 深入理解js——隐式原型
每个函数都有一个prototye(原型),而每个对象都有一个_proto_,可成为隐式原型. _proto_是一个隐藏的属性,javascript不希望开发者用到这个属性值,有的低版本浏览器甚至不支持 ...
- 几种常见SQL分页方式效率比较(转)
http://www.cnblogs.com/iamowen/archive/2011/11/03/2235068.html 分页很重要,面试会遇到.不妨再回顾总结一下. 1.创建测试环境,(插入10 ...
- linux 下搭建 storm
搭建storm 需要搭建: 1.zookeeper 搭建 2.下载/安装 storm 的依赖包 zeromq, jzmq,python 2.storm 搭建 一.Zookeeper 安装 下载安装 ...
- 谈谈Linux下动态库查找路径的问题
学习到了一个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续"上路".回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里 ...