luogu P1616 疯狂的采药 | 完全背包

有许多种物品,每种物品有无数个,求最大价值

luogu P1616 疯狂的采药

01 背包的滚动数组。我们要求倒序遍历,才能保证了每件物品只选用一次

将01背包的第二层循环反过来即为完全背包

此时无法保证每个物品只被选取了一次,相当于物品有无数个

for(int i=1;i<=m;i++)
    {
        for(int j=shi[i];j<=t;j++)
        {
            if(ans[j]<=ans[j-shi[i]]+v[i]) ans[j]=ans[j-shi[i]]+v[i];
        }
    }

 

posted @ 2019-01-21 20:46  yyyr  阅读(141)  评论(0编辑  收藏  举报