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

多重背包

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int maxn=111;
int p[maxn],h[maxn],c[maxn];
int dp[maxn];

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,m,i,j,k;
        scanf("%d%d",&n,&m);
        memset(dp,0,sizeof(dp));
        for(i=1; i<=m; i++)
            scanf("%d%d%d",&p[i],&h[i],&c[i]);
        for(i=1; i<=m; i++)
            for(j=1; j<=c[i]; j++)
                for(k=n; k>=p[i]; k--)
                    dp[k]=max(dp[k],dp[k-p[i]]+h[i]);
        printf("%d
",dp[n]);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/4648010.html