标签:pac ane memset 数据 size 必须 自己 自己的 c++
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 }
标签:pac ane memset 数据 size 必须 自己 自己的 c++
原文地址:https://www.cnblogs.com/liuwenhan/p/11516840.html