HDOJ 2191

多重背包。

模版。

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 #include <string>
 6 #include <algorithm>
 7 using namespace std;
 8 
 9 int main()
10 {
11     int n,m,c;
12     int v[105],w[105],e[105],dp[105];
13 
14     scanf("%d",&c);
15     while(c--)
16     {
17         scanf("%d %d",&n,&m);
18         for(int i=0;i<m;++i)
19         {
20             scanf("%d %d %d",&v[i],&w[i],&e[i]);
21         }
22         memset(dp,0,sizeof(dp));
23         for(int i=0;i<m;++i)
24         {
25             for(int j=0;j<e[i];++j)
26             {
27                 for(int k=n;k>=v[i];--k)
28                 {
29                     dp[k]=dp[k]>(dp[k-v[i]]+w[i])?dp[k]:(dp[k-v[i]]+w[i]);
30                 }
31             }
32         }
33         printf("%d\n",dp[n]);
34     }
35 }

 

posted @ 2013-12-24 22:02  forkbomb  阅读(208)  评论(0)    收藏  举报