采药(lgP1048)

emmm 01 背包模板...

设 f[i] 表示背包容积为 i 时所得的最大价值。

则状态转移方程为 f[j] = f[j - w[i]] + c[i] 。

#include<bits/stdc++.h>
using namespace std;
int w[1001],c[1001],t,m,f[1001];
int main()
{
    scanf("%d%d",&t,&m);
    for(int i = 1;i <= m;i ++)
    {
        scanf("%d%d",&w[i],&c[i]);
    }
    for(int i = 1;i <= m;i ++)
    {
        for(int j = t;j >= w[i];j --)
        {
            f[j] = max(f[j],f[j - w[i]] + c[i]);
        }
    }
    printf("%d",f[t]);
    return 0;
}
    

 

posted @ 2020-11-29 13:09  樱雪喵  阅读(99)  评论(0编辑  收藏  举报