码迷,mamicode.com
首页 > 其他好文 > 详细

杭电2191----悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

时间:2017-08-02 20:59:34      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:--   blog   cstring   names   oid   style   out   背包   for   

 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 }

 

杭电2191----悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

标签:--   blog   cstring   names   oid   style   out   背包   for   

原文地址:http://www.cnblogs.com/qq188380780/p/7275945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!