HDU 2191

来源:互联网 发布:网络直播受众人群 编辑:程序博客网 时间:2024/05/30 22:46

题目链接:

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

题解:

混合背包模版题

代码:

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define met(a,b) memset(a,b,sizeof(a))#define inf 0x3f3f3f3fconst int maxn = 100+10;int value[maxn],weight[maxn],num[maxn];int dp[maxn];int main(){    int t;    scanf("%d",&t);    while(t--)    {        int m,n;        scanf("%d%d",&m,&n);        for(int i=1;i<=n;i++)            scanf("%d%d%d",&value[i],&weight[i],&num[i]);        met(dp,0);        for(int i=1;i<=n;i++)        {            for(int j=1;j<=num[i];j++)            {                for(int k=m;k>=value[i];k--)                    if(value[i]*j<=k)                        dp[k]=max(dp[k],dp[k-value[i]]+weight[i]);            }        }        printf("%d\n",dp[m]);    }}
0 0