P1616疯狂的采药

时间:2021-05-25 20:32:19

传送

它不是可爱的01背包了!!!这个题中一种药可以采无限次!!!

它进化成了完全背包。完全背包中的内循环从m到v[i]改成了从v[i]到m

既然如此,代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int c,t,m,v[],w[],f[];//f数组最好开大点
int main()
{cin>>t>>m;
for(int i=;i<=m;i++)
{cin>>v[i]>>w[i];
}
//f[1][v[1]]=v[1]*w[1];
for(int i=;i<=m;i++)
{
for(int j=v[i];j<=t;j++)
{f[j]=max(f[j],f[j-v[i]]+w[i]);}
}
cout<<f[t];
return ;
}

其余完全背包:P2722总分