hdu 2191
来源:互联网 发布:js中的短路表达式 编辑:程序博客网 时间:2024/05/25 23:57
题目链接: 点击打开链接
题目大意: 买米,给定总钱数,每种米的价格,重量,数量,问能买到的最大重量是多少
思路: 动态规划,多重背包
分析:
多重背包入门题,直接套模板
代码:
#include <cstdio>#include <memory.h>#include <algorithm>using namespace std;const int maxm = 100 + 10;const int maxn = 100 + 10;int V, m, cost[maxm], weight[maxm], amount[maxm], dp[maxn];void ZeroOnePack(int cost, int value){for (int i = V; i >= cost; --i)dp[i] = max(dp[i], dp[i - cost] + value);}void ComPack(int cost, int value){for (int i = cost; i <= V; ++i)dp[i] = max(dp[i], dp[i - cost] + value);}void MulPack(int cost, int value, int amount){if (cost * amount > V) {ComPack(cost, value);return;}for (int i = 1; i <= amount; i <<= 1) {ZeroOnePack(cost * i, value * i);amount -= i;}ZeroOnePack(cost * amount, value * amount);}void solve(){memset(dp, 0, sizeof(dp));for (int i = 1; i <= m; ++i)MulPack(cost[i], weight[i], amount[i]);}int main(){int C;scanf("%d", &C);while (C--){scanf("%d %d", &V, &m);for (int i = 1; i <= m; ++i)scanf("%d %d %d", &cost[i], &weight[i], &amount[i]);solve();printf("%d\n", dp[V]);}return 0;}
0 0
- HDU 2191
- hdu 2191
- hdu 2191
- hdu 2191
- hdu 2191
- hdu 2191
- hdu 2191
- HDU 2191
- hdu 2191
- hdu 2191
- hdu 2191
- hdu 2191
- (2191)HDU
- HDU 2191
- HDU 2191
- hdu--2191
- hdu 2191
- hdu 2191
- 信息与网络安全体系模型研究
- ubuntu 12.04安装jdk
- 通过css旋转字体
- c#获取远程图片
- 微信公众帐号开发教程第16篇-应用实例之历史上的今天
- hdu 2191
- 在windows下安装python——详解(windows7)
- 有这样写JS的同学吗?感觉很不地道,放上来肯定会被喷的。里面还插入了php代码,但是我需要的功能都实现了!哇哈哈@
- 【C语言】程序执行时间测量
- C#自定义控件:扩展控件功能
- linux内核相关面试题
- 自定义 HID 设备的实现
- 08--java异常总结
- HttpURLConnection 的get跟post请求