HDOJ 2191(多重背包)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <algorithm>
 6 #include <queue>
 7 #include <stack>
 8 #include <vector>
 9 using namespace std;
10 int main(int argc, char *argv[])
11 {
12     int t,n,m,sl[200],jg[200],zl[200],dp[200],d[200];
13     scanf("%d",&t);
14     while(t--)
15     {
16         scanf("%d%d",&n,&m);
17         for(int i=0;i<m;i++)
18             scanf("%d%d%d",&jg[i],&zl[i],&sl[i]);
19         
20         memset(dp,0,sizeof(dp));
21         for(int i=0;i<m;i++)
22         {
23             for(int k=0;k<sl[i];k++)
24             {
25                 for(int j=n;j>=jg[i];j--)
26                 {
27                     dp[j]=max(dp[j],dp[j-jg[i]]+zl[i]);
28                 }
29             }
30                 
31         }
32         printf("%d\n",dp[n]);
33     } 
34     return 0;
35 }

猜你喜欢

转载自www.cnblogs.com/huluxin/p/9656101.html