HDOJ(HDU).1114 Piggy-Bank (DP 完全背包) 题意分析 裸的完全背包 代码总览 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define nmax 100000 #define INF 0x3f3f3f3f using namespace std; int we[nmax],va[nmax],dp[nmax]; stru…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题目大意:根据储钱罐的重量,求出里面钱最少有多少.给定储钱罐的初始重量,装硬币后重量,和每个对应面值硬币的重量. Sample Input 3 10 110 2 1 1 30 50 10 110 2 1 1 50 30 1 6 2 10 3 20 4   Sample Output The minimum amount of money in the piggy-bank is 60. The…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意 给出一个储钱罐 不知道里面有多少钱 但是可以通过重量来判断 先给出空储钱罐的重量 再给出装满钱币后储钱罐的重量 之后给出N种货币 pi wi pi 表示 第i件货币的价值 wi 表示第i件货币的重量 最后要求 储钱罐里面最少有多少钱 思路 完全背包模板问题 要注意初始化 因为这个是重量要刚好达到 初始化为 INF dp[0] = 0 AC代码 #include <cstdio> #in…
Problem Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behind is simple. Whenever some ACM member has…
唔..近期在练基础dp 这道题挺简单的(haha).可是我仅仅想说这里得注意一个细节. 首先题意: 有T组例子,然后给出储蓄罐的起始重量E,结束重量F(也就是当它里面存满了零钱的时候).然后给你一个数N,代表如今有N种类型的硬币. 然后接下来N行,每行分别有两个数字P,W,P代表的是这样的类型零钱的价值,W则代表的是这样的类型零钱的重量,零钱的数量不限. 然后要你输出在满足当前重量就是F的情况下(也就是重量刚好为F),输出所需零钱价值最少的情况. 思路: 非常显然,这明显就是一个全然背包.可是这…
差不多是一个裸的完全背包,只是要求满容量的最小值而已.那么dp值全部初始化为inf,并且初始化一下dp[0]即可.代码如下: #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; + ; + ; const int inf = 0x3f3f3f3f; int dp[W]; int val[N],w[N]; int main() { int T; scanf(&qu…
题意:背包重量为F-E,有N种硬币,价值为Pi,重量为Wi,硬币个数enough(无穷多个),问若要将背包完全塞满,最少需要多少钱,若塞不满输出“This is impossible.”. 分析:完全背包. (1)构造二维数组: dp[i][j]---背包重量为j时,前i种物品可得到的最大价值. dp[i][j]=max{dp[i-1][j-k*W[i]]+k*P[i]|0<=k*W[i]<=F-E} (2)构造滚动数组:(一维) dp[j]---背包重量为j时,当前状态可得到的最大价值. d…
HDU 1114 Piggy-Bank 完全背包问题. 想想我们01背包是逆序遍历是为了保证什么? 保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗 means:给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量要求出装满钱罐时的最小价值 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> usin…
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…
题目地址:HDU 1114 把dp[0]初始化为0,其它的初始化为INF.这样就能保证最后的结果一定是满的,即一定是从0慢慢的加上来的. 代码例如以下: #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <queue> #include <cmath> #incl…