HDU_多重背包系列
HDU_2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。
请问:你用有限的资金最多能采购多少公斤粮食呢?
后记:
人生是一个充满了变数的生命过程,天灾、人祸、病痛是我们生命历程中不可预知的威胁。
月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数。那么,我们要做的就应该是珍惜现在,感恩生活——
感谢父母,他们给予我们生命,抚养我们成人;
感谢老师,他们授给我们知识,教我们做人
感谢朋友,他们让我们感受到世界的温暖;
感谢对手,他们令我们不断进取、努力。
同样,我们也要感谢痛苦与艰辛带给我们的财富~
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 100 + 5;int C;
int n, m;
int p[maxn];
int h[maxn];
int c[maxn];
int dp[maxn];void input() {cin >> n >> m;for(int i = 0; i < m; ++i) {cin >> p[i] >> h[i] >> c[i];}
}void solve() {memset(dp, 0, sizeof(dp));for(int i = 0; i < m; ++i) {if(p[i] * c[i] >= n) {for(int j = p[i]; j <= n; ++j) {dp[j] = max(dp[j - p[i]] + h[i], dp[j]);}}else {int k, ki;for(k = 0; ((1 << (k + 1)) - 1) < c[i]; ++k) {ki = (1 << k);for(int j = n; j >= p[i] * ki; --j) {dp[j] = max(dp[j - p[i] * ki] + h[i] * ki, dp[j]);}}ki = c[i] - ((1 << k) - 1);for(int j = n; j >= p[i] * ki; --j) {dp[j] = max(dp[j - p[i] * ki] + h[i] * ki, dp[j]);}}}cout << dp[n] << endl;
}int main() {cin >> C;for(int t = 0; t < C; ++t) {input();solve();}return 0;
}
HDU_2844 Coins
You are to write a program which reads n,m,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of value A1,A2,A3...An then calculate how many prices(form 1 to m) Tony can pay use these coins.
题意:给出n个硬币的数量及价值,问在总价值限定为[1, m]的范围内,能够凑成多少种不同的价值。
#include <set>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 100 + 5;
const int maxm = 100000 + 5;int n, m;
int A[maxn];
int C[maxn];
int dp[maxm];
set<int>cnt;void input() {for(int i = 0; i < n; ++i) {scanf("%d", &A[i]);}for(int i = 0; i < n; ++i) {scanf("%d", &C[i]);}
}void solve() {memset(dp, 0, sizeof(dp));cnt.clear();for(int i = 0; i < n; ++i) {if(A[i] * C[i] >= m) {for(int j = A[i]; j <= m; ++j) {dp[j] = max(dp[j - A[i]] + A[i], dp[j]);}}else {int ki, k;for(k = 0; ((1 << (k + 1)) - 1) < C[i]; ++k) {ki = (1 << k);for(int j = m; j >= A[i] * ki; --j) {dp[j] = max(dp[j - A[i] * ki] + A[i] * ki, dp[j]);}}ki = C[i] - ((1 << k) - 1);for(int j = m; j >= A[i] * ki; --j) {dp[j] = max(dp[j - A[i] * ki] + A[i] * ki, dp[j]);}}}for(int i = 1; i <= m; ++i) {if(dp[i]) cnt.insert(dp[i]);}printf("%d\n", cnt.size());
}int main() {while(scanf("%d%d", &n, &m) != EOF && n + m != 0) {input();solve();}return 0;
}
HDU_多重背包系列相关推荐
- 最少硬币找零系列问题(01背包,完全背包,多重背包动态规划)
背包问题思路解决最小硬币找零系列问题. 一.01硬币找零问题(01背包) 给定不同面额的硬币 coins 和总金额 m.每个硬币最多选择一次.计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬 ...
- 为了OFFER,菜鸟的我必须搞懂动态规划系列三个背包问题之多重背包(二进制优化方法)
@Author:Runsen @Date:2020/9/17 多重背包有三层循环,如果数据非常的大,那么程序就会变得非常悲伤.在多重背包的问题,其实更多的是考查多重背包的二进制优化方法.学习二进制优化 ...
- 九十、动态规划系列背包问题之多重背包
@Author:Runsen 曾几何时,才记得自己还是大一军训的菜鸟,带着 迷茫和憧憬踏入大学,踏入化工学院,却踏入这个行业,殊不知岁月是最高明的小偷,偷走时间,带走青春,一点线索也不留.大学的玩命学 ...
- 背包九讲系列1——01背包、完全背包、多重背包
我在进行一些互联网公司的技术笔试的时候,对于我来说最大的难题莫过于最后的那几道编程题了,这对算法和数据结构有一定程度上的要求,而"动态规划"又是编程题中经常出现的算法类型,并且对于 ...
- c++ 多重背包状态转移方程_动态规划入门——详解经典问题零一背包
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周三算法与数据结构专题的第12篇文章,动态规划之零一背包问题. 在之前的文章当中,我们一起探讨了二分.贪心.排序和搜索算法,今天我们来 ...
- python多重背包问题_01-背包、完全背包、多重背包及其相关应用
本文介绍了背包问题系列,主要包括: [1] 01-背包及其应用 [2]完全背包及其应用 [3]多重背包 [1]01-背包及其应用: 1.1.01-背包问题描述: 有 N 件物品和一个容量为 C 的背包 ...
- 01背包输出路径、完全背包、多重背包
背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...
- 单调队列多重背包时间复杂度O(vn)
版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...
- 背包问题(多重背包+0-1背包)
一:0-1背包问题 #include<iostream> #include<algorithm> #include<cstring> const int maxn= ...
最新文章
- input type右对齐与只读的
- java搜索项目内的异常_java中用Lucene做搜索,在建索引时遇到的2个异常
- 唯一的hashCodes不足以避免冲突
- 用计算机弹可惜不是你,可惜不是你 还是幸亏不是你
- 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc
- C#中的文件流和文本流
- .tar.bz2文件解压命令
- python tkinter获取屏幕大小_用 Python 制作关不掉的端午安康弹窗
- modbus 调试工具之modbus slave与modbus poll
- at89c51编程语言,(最新整理)AT89C51单片机简介
- synchronized-锁总结
- 希腊字母表(直接输入希腊字母的方法)
- 云计算的概念与价值02技术与价值
- 参加python全栈开发培训需要多少钱?
- 9.22生日——随笔
- CAD的图层过滤器有什么用?
- VR全景制作的展示方式你了解多少?具体有哪些?
- colab上传压缩文件并解压
- 国内android开发之墙痛,Android面试题-机型适配之痛,例如三星、小米、华为、魅族等。...
- [国嵌攻略][054][NandFlash驱动设计_写]