poj1276 多重背包
来源:互联网 发布:淘宝达人直播怎么赚钱 编辑:程序博客网 时间:2024/05/21 21:42
题目链接:点击打开链接
题意:
取款机的问题;
有 n 种钱;
每种钱有 v[i] 的价值;
每种钱有 w[i] 张;
问给定要取得钱 cash 之后能从取款机最多取多少钱;
理解:
多重背包;
直接套模板;
递推式:dp[i] = max(dp[i], dp[i - mul * v[i]] + mul * v[i]);
其中的值根据代码定义;
代码如下:
#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include <iostream>#include <algorithm>#include <vector>#include <string>#include <map>#include <set>#include <queue>#include <stack>using namespace std;typedef long long LL;typedef pair<int, int> PII;const int MIN_INF = 1e-7;const int MAX_INF = (1e9) + 7;#define X first#define Y secondint dp[222222];int v[111], w[111];int main() { int cash, n; while (cin >> cash >> n) { for (int i = 0; i < n; ++i) { cin >> w[i] >> v[i]; } memset(dp, 0, sizeof(dp)); for (int i = 0; i < n; ++i) { int num = w[i]; for (int k = 1; num > 0; k <<= 1) { int mul = min(k, num); for (int j = cash; j >= mul * v[i]; --j) { dp[j] = max(dp[j], dp[j - mul * v[i]] + mul * v[i]); } num -= k; } } cout << dp[cash] << endl; } return 0;}
0 0
- poj1276 多重背包
- 北大POJ1276 多重背包
- poj1276(DP多重背包)
- poj1276 多重背包
- poj1276 多重背包
- poj1276 多重背包
- poj1276(多重背包)
- poj1276(多重背包)
- poj1276多重背包
- poj1276 多重背包
- POJ1276【多重背包】
- POJ1276 多重背包
- poj1276(Cash Machine + 多重背包)
- POJ1276:Cash Machine(多重背包)
- POJ1276:Cash Machine(多重背包)
- poj1276 Cash Machine-多重背包
- poj1276(多重背包模板)
- POJ1276:Cash Machine(多重背包)
- spark操作hbase的javaapi
- Kotlin语法(六)-类和继承
- kuangbin求带飞DP1 Max Sum Plus Plus(动态规划+滚动数组)
- Python3爬虫学习笔记1.2——模拟登录
- POJ 3214 Object Clustering 哈夫曼距离最小生成树
- poj1276 多重背包
- 题解:艾米利亚的求助
- Android入门学习——之CSS
- POJ-3666 Making the Grade
- Spring字符集过滤器CharacterEncodingFilter
- kafka_2.11-0.10.0.1遇到的问题
- C++11之AOP实现
- Solr 4.7 Error getting leader from zk
- percona-xtrabackup 热备 安装