Consumer HDU - 3449

Posted liuwenhan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Consumer HDU - 3449相关的知识,希望对你有一定的参考价值。

FJ打算去购物,在此之前,他需要一些盒子来装他要买的各种各样的东西。每个盒子都用来携带一些特定的东西(也就是说,如果他要买这些东西,他必须事先买到盒子)。每种东西都有自己的价值。现在FJ的购物金额只有W美元,他想用这笔钱购物,使他所买的物品的总价值最高。 
 有多组测试数据 

Input 每组数据的第一行两个整数,盒子的个数n (1 <= n <= 50),FJ所携带钱的总额 w (1 <= w <= 100000) 
 接下来的n行中。每行前两个整数为:第i个盒子的价格pi(1<=pi<=1000),这个盒子可携带的物品的数量 mi (1<=mi<=10)接下来有mi对数字,表示物品的价格cj (1<=cj<=100),价值vj(1<=vj<=1000000)Output对于每一组测试数据,输出FJ可以得到价值的最大值 
Sample Input

3 800
300 2 30 50 25 80
600 1 50 130
400 3 40 70 30 40 35 60

Sample Output

210

code:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 1e5 + 10;
 4 int dp[maxn];
 5 int tmp[maxn];
 6 
 7 int main()
 8 
 9     int n, v;
10     while (cin >> n >> v)
11     
12         memset(dp, 0, sizeof(dp));
13         for (int i = 1; i <= n; i++)
14         
15             int p, num; cin >> p >> num;
16 
17             memcpy(tmp, dp, sizeof(dp));
18             for (int j = 1; j <= num; j++)
19             
20                 int w, val;
21                 scanf("%d%d", &w, &val);
22                 for (int k = v - p; k >= w; k--)
23                     tmp[k] = max(tmp[k], tmp[k - w] + val);
24             
25             for (int j = 0; j <= v - p; j++)
26                 dp[j + p] = max(dp[j + p], tmp[j]);
27         
28         cout << dp[v] << endl;
29     
30 

 

 

以上是关于Consumer HDU - 3449的主要内容,如果未能解决你的问题,请参考以下文章

Consumer HDU - 3449

hdu 3449 有依赖性的01背包

hdu_3449(有依赖背包)

kafka consumer重新连接后如何获取当前最新数据

方法引用

.net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结