UESTC 1691 这是一道比CCCC简单题经典的中档题 多重背包
来源:互联网 发布:淘宝店怎么做虚拟产品 编辑:程序博客网 时间:2024/05/22 06:53
这是一道比CCCC简单题经典的中档题
Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)Submit Status
谭爷曾经是个很爱喝豆奶的男人,UESTC小卖部有N种豆奶,每种豆奶的数量为C1,C2......Cn。谭爷在抢劫小卖部的时候会从中任选若干件放在容量为W的谭爷巨型背包里,每种豆奶的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数)。求背包能够容纳的豆奶最大价值。
Input
第1行,两个整数N和W,中间用空格隔开。N为豆奶的种类数,W为背包的容量。(1 <= N <= 100,1 <= W <= 50000) 第2 - N + 1行,每行3个整数Wi,Pi和Ci,分别是豆奶体积、价值和数量。(1 <= Wi, Pi <= 10000, 1 <= Ci <= 200)Output
谭爷可以抢到的最大的豆奶价值之和。Sample input and output
Sample Input Sample Output
3 6 9
2 2 5
3 3 8
1 4 1
Source
2017 UESTC Training for Dynamic Programming
UESTC 1691 这是一道比CCCC简单题经典的中档题
My Solution
多重背包
转化成0-1背包来跑。
for(i = 1; i <= n; i++){
for(k = 0; k <= c[i]; k++){
for(j = w; j >= 0; j--){
if(j - k*need[i] >= 0) dp[i][j] = max(dp[i][j], dp[i-1][j-k*need[i]] + k*value[i]);
else break;
}
}
for(j = 0; j <= w; j++){
if(j) dp[i][j] = max(dp[i][j], dp[i][j-1]);
}
}
时间复杂度 O(n*sigma(ci))
空间复杂度 O(n^w)
#include <iostream>#include <cstdio>using namespace std;typedef long long LL;const int MAXN = 1e2 + 8, MAXM = 5e4 + 8;int need[MAXN], value[MAXN], c[MAXN], dp[MAXN][MAXM];template <class T>inline void cinn(T &ret){ char c=getchar(); while(c<'0'||c>'9') c=getchar(); ret=c-'0'; while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');}int main(){ #ifdef LOCAL freopen("m.txt", "r", stdin); //freopen("m.out", "w", stdout); #endif // LOCAL //ios::sync_with_stdio(false); cin.tie(0); int n, w, i, j, k; //cin >> n >> w; //scanf("%d%d", &n, &w); cinn(n); cinn(w); for(i = 1; i <= n; i++){ //cin >> need[i] >> value[i]; //scanf("%d%d%d", &need[i], &value[i], &c[i]); cinn(need[i]); cinn(value[i]); cinn(c[i]); } for(i = 1; i <= n; i++){ for(k = 0; k <= c[i]; k++){ for(j = w; j >= 0; j--){ if(j - k*need[i] >= 0) dp[i][j] = max(dp[i][j], dp[i-1][j-k*need[i]] + k*value[i]); else break; } } for(j = 0; j <= w; j++){ if(j) dp[i][j] = max(dp[i][j], dp[i][j-1]); } } //cout << dp[n-1][w] << endl; printf("%d\n", dp[n][w]); return 0;}
Thank you!
------from ProLights
阅读全文
0 0
- UESTC 1691 这是一道比CCCC简单题经典的中档题 多重背包
- UESTC 1691 这是一道比CCCC简单题经典的中档题
- UESTC 1692 这是一道比CCCC简单题更有想象力的中档题 完全背包
- UESTC 1692 这是一道比CCCC简单题更有想象力的中档题
- UESTC 1690 这是一道比CCCC简单题难的简单题 状态压缩dp
- UESTC 1690 这是一道比CCCC简单题难的简单题
- UESTC 1690 这是一道比CCCC简单题难的简单题||HiHoCoder #1048 : 状态压缩·二
- 这是一道水题 UESTC
- [洛谷P3927]一道中档题
- 洛谷3927 一道中档题
- UESTC 1696 一道简单的字符串题 KMP+dp
- UESTC 1703 一道更简单的字符串题 哈希+枚举
- hdu1059Dividing(多重背包问题(模板)做的第一道背包题)
- 【luogu10月月赛】一道中档题 Factorial(数论)
- 洛谷10月月赛R1-T1-一道中档题 Factorial
- 多重背包经典列题hdu1171
- 多重背包经典列题hdu2844coins
- A. 这是一道简单的水题~
- ant build各个指令的详细作用 ant讲解
- 创建JRootPane面板,并在这个面板中添加菜单
- MOOC清华《程序设计基础》第2章第4题:解方程2
- HDU 2032
- java.nio.ByteBuffer的clear、flip、rewind方法的区别
- UESTC 1691 这是一道比CCCC简单题经典的中档题 多重背包
- linux网络编程概念(一)
- 330. Patching Array
- gym100818I
- webpack---粗暴解决Module build failed: Error: The node API for 'babel' has been moved to babel-core
- html5解决大文件断点续传
- MOOC清华《程序设计基础》第2章第5题:银行存款问题2
- 接口测试 Http 接口测试框架 (思路 + 实现中 + 开源 + 可能难产)
- 所有的美好,都始于遇见