Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买. 请问:你用有限的资金最多能采购多少公斤粮食呢? 后记: 人生是一个充满了变数的生命过程,天灾.人祸.病痛是我们生命历程中不可预知的威胁. 月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数.那么,我们要做的就应该是珍惜现在,感恩生活-- 感谢父母,他们给予我们…
HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化) 题意分析 首先C表示测试数据的组数,然后给出经费的金额和大米的种类.接着是每袋大米的价格,重量和袋数. 每种大米的数量是有限的,应该能看出是多重背包的问题.关键是多重背包的处理方法.对多重背包采用二进制优化的方法.设同种大米的数量为n,每袋的价格为v,那么把同一种大米分别拆成1,2,4,8,16--(直到不够2^n时,剩下的单独分成一组),拆分的价格也分别对应是v,2v,4v,8v…
HDU 2191悼念512汶川大地震遇难同胞--珍惜如今.感恩生活(多重背包) http://acm.hdu.edu.cn/showproblem.php?pid=2191 题意: 如果你有资金n元, 然后有m种大米, 每种大米价格为cost[i], 重量为val[i], 数量为num[i]. 如今问你用n元钱最多能买多重的大米? 分析: 本题是典型的多重背包问题. 我们令dp[i][j]==x表示仅仅购买前i种大米, 且总费用<=j时能购买的大米最大重量为x. 初始化: dp为全0. 因为每种…
多重背包. #include <stdio.h> #include <string.h> ]; int n, m; void completePac(int p, int h) { int i, tmp; for (i=p; i<=n; ++i) { tmp = dp[i-p] + h; if (dp[i] < tmp) dp[i] = tmp; } } void onezeroPac(int p, int h) { int i, tmp; for (i=n; i>…
解题思路: 多重背包:第 i 件物品有 j 个可用. 本题中 第 p[i] 类大米 有 c[i] 袋大米可买 ,故本题为多重背包. n(总钱数).m(种类) p[i] 单价 h[i] 重量 c[i] 本种类的总袋数 01背包解题伪代码: for i=1-m  //种类 for j=1-c[i]  //每种的最大袋数 for k=n-p[i] //总钱数-当前种类的单价 f[k]=min{f[k],f[k-p[i]]+h[i]} #include<bits/stdc++.h> using nam…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 题目意思:有 资金 n 和 m 种类型的大米,对第 i 种类型的大米,价格.数量.袋数分别是: pi,  hi, ci,问最多能采购的大米的重量是多少. 多重背包入门题~~~~~~ 在01 背包中两重循环之间多了一重循环  0 ~ bag[i] :表示第 i 种物品的数量从0~bag[i] 枚举. #include <iostream> #include <cstring> #i…
这两道题都是多重背包的基础题,前面的安格题意是:给出每个物体的价值和物体的数量,如何分使得A,B所得价值最接近并且A的价值不能小于B,就类似于NYOJ上的那个邮票分你一半那个意思,只不过这里不是一个而是多个,所以多重背包 前一个题是将总和的一半当作背包的容量来求,代码如下 #include <iostream> #include <cstdio> #include <cstring> using namespace std; ]; ]; ]; int main() {…
#include<iostream> #include<cstdio> #include<algorithm> /* 虽然该题不排序也可以过,但是我认为价格和重量最大的先买比较合理 */ #include<cstring> #include<string> using namespace std; #define N 105 int dp[N]; struct Node{ int p,h,c; }num[]; bool cmp(Node a,No…
Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 5   Accepted Submission(s) : 1 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一…
Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最多能采购多少公斤粮食呢?后记:人生是一个充满了变数的生命过程,天灾.人祸.病痛是我们生命历程中不可预知的威胁.月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数.那么,我们要做的就应该是珍惜现在,感恩生活——感谢父母,他们给予我们生命,抚养我…