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 }