洛谷【P1616】疯狂的采药
作者:互联网
浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html
题目传送门:https://www.luogu.org/problemnew/show/P1616
\(01\)背包:https://www.cnblogs.com/AKMer/p/10437672.html
完全背包。把\(01\)背包的倒着枚举改成正着枚举即可,这就相当于是用包含使用了\(i\)号物品的状态来继续更新包含\(i\)号物品的状态,表示每个物品可以用无限多个。
时间复杂度:\(O(nm)\)
空间复杂度:\(O(m)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1e5+5;
int n,m;
int f[maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int main() {
m=read(),n=read();
for(int i=1;i<=n;i++) {
int w=read(),v=read();
for(int j=w;j<=m;j++)
f[j]=max(f[j],f[j-w]+v);
}
printf("%d\n",f[m]);
return 0;
}
标签:www,ch,洛谷,int,复杂度,背包,https,采药,P1616 来源: https://www.cnblogs.com/AKMer/p/10437680.html