zoukankan      html  css  js  c++  java
  • 杭电2191----悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

     1 //典型的多重背包
     2 #include <iostream>
     3 #include <cstring>
     4 using namespace std;
     5 int d[1005];
     6 int n,m;
     7 void zb(int r,int v)
     8 {
     9     for(int i = n; i >= r; --i)
    10         if(d[i-r] + v > d[i])
    11             d[i] = d[i-r] + v;
    12 }
    13 void cb(int r,int v)
    14 {
    15     for(int i = r; i <= n; ++i)
    16         if(d[i-r] + v > d[i])
    17             d[i] = d[i-r] + v;
    18 }
    19 void mb(int r,int v,int t)
    20 {
    21     if(t*r >= n) cb(r,v);
    22     else
    23     {
    24         for(int i = 1; i < t; i<<=1)
    25         {
    26             zb(i*r,i*v);
    27             t -= i;
    28         }
    29         zb(t*r,t*v);
    30     }
    31 }
    32 int main()
    33 {
    34     int t;
    35     cin >> t;
    36     while(t--)
    37     {
    38         memset(d,0,sizeof d);
    39         cin >> n >> m;
    40         while(m--)
    41         {
    42             int a,b,c;
    43             cin >> a >> b >> c;
    44             mb(a,b,c);
    45         }
    46         cout << d[n] << endl;
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    手动渗透测试漏洞
    博弈论一 [ 巴什游戏 ]
    [Error]EOL while scanning string literal
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/qq188380780/p/7275945.html
Copyright © 2011-2022 走看看