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

来源:互联网 发布:淘宝为什么是O2O 编辑:程序博客网 时间:2024/06/04 00:38

多重背包裸题。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100+10;int n,m;int p[maxn],h[maxn],c[maxn];int f[maxn];int main(){    int t;    scanf("%d",&t);    while(t--)    {        memset(f,0,sizeof(f));        scanf("%d%d",&n,&m);        for(int i=1;i<=m;i++)            scanf("%d%d%d",&p[i],&h[i],&c[i]);        for(int i=1;i<=m;i++)        {            int l=c[i],k=1;            while(l>k)            {                for(int j=n;j>=k*p[i];j--)                    f[j]=max(f[j],f[j-k*p[i]]+k*h[i]);                l-=k;                k*=2;            }            for(int j=n;j>=l*p[i];j--)                f[j]=max(f[j],f[j-l*p[i]]+l*h[i]);        }        printf("%d\n",f[n]);    }    return 0;}


0 0