HDU-2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

来源:互联网 发布:软件界面设计要求 编辑:程序博客网 时间:2024/06/04 20:08

比较简单的多重背包问题

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=500;int n,m,w[maxn],c[maxn],num[maxn],dp[maxn];int main(){    int T;    scanf("%d",&T);    while(T--)    {int cur=0;scanf("%d%d",&n,&m);for(int i=0;i<m;i++)    scanf("%d%d%d",&w[i],&c[i],&num[i]);int ans=0;memset(dp,0,sizeof(dp));for(int i=0;i<m;i++){    for(int j=n;j>=w[i];j--)    {for(int k=1;k<=num[i];k++)    if(j>=k*w[i])dp[j]=max(dp[j],dp[j-k*w[i]]+c[i]*k);ans=max(ans,dp[j]);    }}printf("%d\n",ans);    }    return 0;}


原创粉丝点击