码迷,mamicode.com
首页 > 其他好文 > 详细

hdu - 2660 Accepted Necklace (二维费用的背包问题)

时间:2015-06-01 22:14:32      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=2660

f[v][u]=max(f[v][u],f[v-1][u-w[i]]+v[i];

注意中间一层必须逆序循环.

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 int dp[21][1001];
 6 int v[1001],w[1001];
 7 int main()
 8 {
 9     //freopen("a.txt","r",stdin);
10     int t,n,m,k;
11     scanf("%d",&t);
12     while(t--)
13     {
14         scanf("%d%d",&n,&k);
15         for(int i=1;i<=n;i++)
16         {
17             scanf("%d%d",&v[i],&w[i]);
18         }
19         scanf("%d",&m);
20         memset(dp,0,sizeof(dp));
21         for(int i=1;i<=n;i++)
22         {
23             for(int l=k;l>=1;l--)
24             for(int j=m;j>=w[i];j--)
25             dp[l][j]=max(dp[l][j],dp[l-1][j-w[i]]+v[i]);
26         }
27         printf("%d\n",dp[k][m]);
28     }
29     return 0;
30 }

 

hdu - 2660 Accepted Necklace (二维费用的背包问题)

标签:

原文地址:http://www.cnblogs.com/nowandforever/p/4544872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!