zoukankan      html  css  js  c++  java
  • Consumer HDU

    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 }
    
    
    
     
  • 相关阅读:
    解析iscroll-小demo
    iscroll的理解
    jquery代码小片段
    jQuery的性能优化
    事件代理
    数组方式使用jQuery对象
    循环时的dom操作
    JavaScript中的ajax(二)
    jQuery与ajax的应用(一)
    表单应用
  • 原文地址:https://www.cnblogs.com/liuwenhan/p/11516840.html
Copyright © 2011-2022 走看看