hdu 2191

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2191

题意:中文。512地震默哀。

mark:dp。多重背包。先做了1171再做这题就很容易了。

代码:

 1 # include <stdio.h>
 2 # include <string.h>
 3 
 4 
 5 int dp[110] ;
 6 
 7 
 8 int main ()
 9 {
10     int T, ans, n, m ;
11     int p, h, c, i, j ;
12     scanf ("%d", &T) ;
13     while (T--)
14     {
15         scanf ("%d%d", &m, &n) ;
16         memset (dp, 0, sizeof(dp)) ;
17         ans = 0 ;
18         while (n--)
19         {
20             scanf ("%d%d%d", &p, &h, &c) ;
21             for(i = m ; i>=0 ; i--)
22             {
23                 for(j = 1 ; j <= c && i+j*p<=m ;j++)
24                 {
25                     if (dp[i+j*p] < dp[i]+j*h)
26                         dp[i+j*p] = dp[i]+j*h ;
27                     if (dp[i+j*p] > ans) ans = dp[i+j*p]  ;
28                 }
29             }
30         }
31         printf ("%d\n", ans) ;
32     }
33     return 0 ;
34 }
posted @ 2012-05-23 05:33  Seraph2012  阅读(791)  评论(0编辑  收藏  举报