HDU - 3732 Ahui Writes Word(多重背包)
来源:互联网 发布:淘宝免单可信吗 编辑:程序博客网 时间:2024/05/16 19:15
题目大意:给出N个单词的花费和价值,问在最多花费M的情况,能得到的最大价值
解题思路:因为花费和价值都在[0,10],所以将其压缩,不然的话,N太大了,直接背包会超时
接着就是完全背包问题了
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 10010;int num[12][12];int dp[N];int n, m;void init() { memset(num, 0, sizeof(num)); char str[20]; int V, C; for (int i = 0; i < n; i++) { scanf("%s%d%d", str, &V, &C); num[V][C]++; }}void CompletePack(int val, int cost) { for (int i = cost; i <= m; i++) dp[i] = max(dp[i], dp[i - cost] + val);}void ZeroOnePack(int val, int cost) { for (int i = m; i >= cost; i--) dp[i] = max(dp[i], dp[i - cost] + val);}void solve() { memset(dp, 0, sizeof(dp)); for (int i = 0; i <= 10; i++) for (int j = 0; j <= 10; j++) { if (num[i][j] * j >= m) CompletePack(i, j); else { int t = 1; while (t <= num[i][j]) { ZeroOnePack(i * t, j * t); num[i][j] -= t; t *= 2; } if (num[i][j]) ZeroOnePack(num[i][j] * i, j * num[i][j]); } } int ans = 0; for (int i = 0; i <= m; i++) ans = max(ans, dp[i]); printf("%d\n", ans);}int main() { while (scanf("%d%d", &n, &m) != EOF) { init(); solve(); } return 0;}
0 0
- HDU 3732 Ahui Writes Word(多重背包)
- HDU 3732(Ahui Writes Word)多重背包
- HDU - 3732 Ahui Writes Word(多重背包)
- hdu 3721 Ahui Writes Word 多重背包
- hdu 3732 Ahui Writes Word 多重背包 小心超时
- HDU 3732 Ahui Writes Word(多重背包问题)
- hdu 3732 Ahui Writes Word 【多重背包】、好题
- HDOJ 3732 Ahui Writes Word (多重背包)
- hdoj 3732 Ahui Writes Word (多重背包)
- HDU 3732 Ahui Writes Word(01背包转化为多重背包)
- 杭电3732 Ahui Writes Word (多重背包问题)
- HDOJ3732--Ahui Writes Word--多重背包
- Ahui Writes Word hdu3732 多重背包
- hdu3732 Ahui Writes Word (多重背包)
- hdu 3732 Ahui Writes Word(多重背包的二进制思想优化)
- hdu 3732 Ahui Writes Word
- HDU 3732 Ahui Writes Word
- HDU 3732 Ahui Writes Word
- HDU - 2844 Coins(多重背包)
- HDU 4912 Paths on the tree(LCA+贪心)
- OpenCV 学习(几种基本的低通滤波)
- CF479 Riding in a Lift
- SaltStack学习笔记
- HDU - 3732 Ahui Writes Word(多重背包)
- 通过bundle对象实现Fragment之间的传值
- eclipse struts2 错误及解决方法
- lintcode-线段树的构造-201
- Android综合小练习Fragment,解析,Handler,ViewPager
- popupWindow的用法(1)
- UVA 1629 - Cake slicing 题解
- gym Learning to Add 一个水题 结果看错题意了
- hdu1426搜索