DHU 1114 Piggy-Bank (完全背包,变式)
来源:互联网 发布:网络作战发展战略 编辑:程序博客网 时间:2024/05/09 18:00
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114
==================================
题目大意,给你空小猪储钱罐的重量和装满小猪储钱罐的重量
还有给你硬币的价值和重量,让你估计储钱罐里最少会有多少价值的钱
这道题因为硬币个数不为1,所谓我们考虑使用完全背包
这时候我们就要分析动态方程,要求的最小的价值,那么很好理解,使用min函数,使dp储存的是价值最小值。
此时我们需要将dp数组初始化为最大值,并且dp[0]=0,表示什么都不能放进去。
然后我们考虑如何更新dp数组。
dp保留的是最小值,那么数组下标则要表示的是重量问题。
所以可以这样列动态方程:dp[i]=min(dp[i],dp[i-weight]+value);
接下来就很简单了:
AC代码如下:
#include<iostream>#include<stdio.h>using namespace std;#define INF 100000000int dp[50010];int value[50010],weight[50010];int V,num;int E,F;int min(int a,int b){if(a>b)return b;elsereturn a;}void CompletePack(int value,int weight){int i;for(i=weight;i<=V;i++)dp[i]=min(dp[i],dp[i-weight]+value);}int main(){int Case;scanf("%d",&Case);while(Case--){int i;scanf("%d %d",&E,&F);scanf("%d",&num);V=F-E;for(i=1;i<=num;i++)scanf("%d %d",&value[i],&weight[i]);for(i=1;i<=V;i++)dp[i]=INF;dp[0]=0;for(i=1;i<=num;i++)CompletePack(value[i],weight[i]);if(dp[V]>=INF)printf("This is impossible.\n");elseprintf("The minimum amount of money in the piggy-bank is %d.\n",dp[V]);}return 0;}
- DHU 1114 Piggy-Bank (完全背包,变式)
- Piggy-Bank----HDU_1114----完全背包(变式)
- 完全背包- Piggy-Bank
- Piggy-Bank(完全背包)
- 完全背包,piggy-bank
- Piggy-Bank (完全背包)
- Piggy-Bank完全背包
- 【完全背包】Piggy - Bank
- Piggy-Bank(完全背包)
- HDOJ 1114 Piggy-Bank 完全背包
- hdu 1114 Piggy-Bank(完全背包)
- HDOJ 1114 Piggy-Bank (完全背包)
- hdu 1114 Piggy-Bank【完全背包】
- hdu 1114 Piggy-Bank(完全背包)
- HDU 1114 Piggy-Bank (完全背包)
- HDU 1114 Piggy-Bank ( 完全背包 )
- HDU 1114 Piggy-Bank完全背包
- hdu 1114 Piggy-Bank(完全背包)
- HashMap和Hashtable
- Apache配置本地测试多网站域名与虚拟主机
- opencv深入学习(5)—ROI区域
- UpdatePanel控件的使用(实现局部刷新,ajax)
- 链栈的实现
- DHU 1114 Piggy-Bank (完全背包,变式)
- Oracle字符集的基本知识
- Linux串口(serial、uart)驱动程序设计 (2010-05-26 16:28)
- QT工程中使用图片的三种方法
- ASP.NET的 JQuery实例
- poj1363----栈
- 线性表之链式结构
- pb实现文件copy
- xampp中dos下连接到mysql