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 ...
随机推荐
- 纸上谈兵:伸展树(splay tree)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们讨论过,树的搜索效率与树的深度有关.二叉搜索树的深度可能为n,这种情况下,每次 ...
- 什么是Mbps、Kbps、bps、kb、mb及其换算和区别
Mbps 即 Milionbit pro second(百万位每秒): Kbps 即 Kilobit pro second(千位每秒): bps 即 bit pro second(位每秒): 速度单位 ...
- struts2 xml中重定向
<result name="success" type="redirect">ManagePartAction</result> 重定向 ...
- JavaScript Function(函数表达式)
创建函数 创建函数的方式有两种:1.函数声明,2.函数表达式 函数声明的语法为 functionName(); //不会报错,函数声明提升function functionName(arg0,arg1 ...
- ---解决git pull 后出现冲突的解决方法
0. git statusOn branch masterYour branch and 'origin/master' have diverged,and have 1 and 3 differen ...
- CSS布局--浮动与清除
浮动和清除 浮动和清除是页面布局的重要属性.浮动的意思是指将元素从常规的文档流中取出来. 当你浮动一个元素的时候,浮动的元素会被浏览器尽量的往上放,能放多高就放多高,一直到某个元素的边界为止. 浮动元 ...
- 基于HOG-3D的时空描述子
作者提出一种新的基于局部描述子的行为识别算法.
- JSTL和EL的区别
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持JSP1.2 ...
- Delphi 7学习开发控件
我们知道使用Delphi快速开发,很大的一方面就是其强大的VCL控件,另外丰富的第三方控件也使得Delphi程序员更加快速的开发出所需要的程序.在此不特别介绍一些概念,只记录自己学习开发控件的步骤.假 ...
- P2001xor-sigma 字典树,然而好坑
https://vijos.org/p/2001 设perXor[i]表示1---i的前缀异或值. 那么要得到某一段的异或值,只需要perXor[j] ^ perXor[i - 1] 那么我们把per ...