专栏文章
题解:P1060 [NOIP2006 普及组] 开心的金明
P1060题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqi0ybl
- 此快照首次捕获于
- 2025/12/04 05:08 3 个月前
- 此快照最后确认于
- 2025/12/04 05:08 3 个月前
洛谷P1060
本题是一个典型的 01 背包问题,可转化为每个物品的重量 ,价值为 ,背包总容量为 。
设 表示当处理到第 件物品时,还有 的空间时所获的的价值(第 件物品可以选择取或者不取),可得状态转移方程:
再用滚动数组优化空间,时间复杂度为 ,空间复杂度为 。
完结散花!
CPP#include <bits/stdc++.h>
using namespace std;
int f[30001],v[26],w[26],n,m;
int main(){
cin>>n>>m;
for (int i=1;i<=m;i++){
cin>>v[i]>>w[i];
}
for (int i=1;i<=m;i++){
for (int j=n;j>=v[i];j--){
f[j]=max(f[j],f[j-v[i]]+v[i]*w[i]);
}
}
cout<<f[n]<<endl;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...