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 ...
随机推荐
- 纸上谈兵:哈希表(hash table)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! HASH 哈希表(hash table)是从一个集合A到另一个集合B的映射(map ...
- Redis的Python客户端redis-py的初步使用
1. Redis的安装 sudo pip install redis sudo pip install hiredis Parser可以控制如何解析redis响应的内容.redis-py包含两个Par ...
- 15款增强web体验的Javascript库
1. Pikaday: Standalone JavaScript Datepicker 这是一个令人耳目一新的JavaScript日期选择器 轻量轻(压缩和gzip后小于5KB) 没有依赖其它JS框 ...
- 银行ATM机工作流程模拟编程
[编程内容] 编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程.依据帐户信息:姓名.帐号.密码.余额,完成ATM机功能:登录.显示余额.取款.修改密码. ...
- android常见面试问题
重:Listview中多个类型的条目如何处理?如果条目里边有button,会出现什么问题?如何处理?如果条目里边有checkbox会出现什么问题,如何解决?(这三个问题有过开发经验都应该遇到过). 在 ...
- VMware使用中常见问题
1.NAT模式下,主机与虚拟机可以相互ping通,但虚拟机无法上网 解决办法:a.设置主机网络属性如下图所示,允许网络共享.
- 理解docker容器和镜像(layer,ufs)和docker命令解释
博客好文1:http://blog.csdn.net/x931100537/article/details/49633107(理解docker容器和镜像,理解简单,从原理入手,什么是layer,什么是 ...
- Python 黑魔法 --- 描述器(descriptor)
Python 黑魔法---描述器(descriptor) Python黑魔法,前面已经介绍了两个魔法,装饰器和迭代器,通常还有个生成器.生成器固然也是一个很优雅的魔法.生成器更像是函数的行为.而连接类 ...
- web前端开发工具HBuilder使用技巧之快捷键
/*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/ 创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter) 中途 ...
- coreseek实战(一):windows下coreseek的安装与测试
coreseek实战(一):windows下coreseek的安装与测试 网上关于 coreseek 在 windows 下安装与使用的教程有很多,官方也有详细的教程,这里我也只是按着官方提供的教程详 ...