1. 程式人生 > >杭電2191----悼念512汶川大地震遇難同胞——珍惜現在,感恩生活

杭電2191----悼念512汶川大地震遇難同胞——珍惜現在,感恩生活

多重 out names class ++ 現在 bsp blog 杭電

 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汶川大地震遇難同胞——珍惜現在,感恩生活