【NOIP2006】【Luogu1060】开心的金明(01背包模板)
【摘要】
problem
有n个物品,价格为wi, 重要度为vi。在代价不超过m的情况下,最大化wi*vi的值n < 30, m < 3e4
solution
Qwq,Wi*Vi是确定的。 所以...
problem
- 有n个物品,价格为wi, 重要度为vi。
- 在代价不超过m的情况下,最大化wi*vi的值
- n < 30, m < 3e4
solution
Qwq,Wi*Vi是确定的。
所以vi *= wi;之后,,,就是一个01背包。
——
f[i]表示剩余体积为i时能获得的最大价值
决策过程可以选或者不选。
更多见背包九讲?
复杂度O(mn)
codes
#include<iostream>
using namespace std;
const int maxn = 40;
int v[maxn], w[maxn], f[50005];
int main(){
int n, m; cin>>m>>n;
for(int i = 1; i <= n; i++){
int x, y; cin>>x>>y;
w[i] = x; v[i] = x*y;
}
for(int i = 1; i <= n; i++)
for(int j = m; j >= w[i]; j--)
f[j] = max(f[j], f[j-w[i]]+v[i]);
cout<<f[m]<<'\n';
return 0;
}
文章来源: gwj1314.blog.csdn.net,作者:小哈里,版权归原作者所有,如需转载,请联系作者。
原文链接:gwj1314.blog.csdn.net/article/details/81178683
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)