计蒜客 家具布置 (有依赖的背包问题)
2017-08-07 21:13
239 查看
题目来源:这个题目改编自NOIP2006 金明的预算方案
题目思路:我们仔细想想,其实这个题目一共只有5种情况, 1主件+0附件 1主件+1号附件 1主件+2号附件 1主件+1号附件+2号附件 0主件+0附件;也就是说上述五种情况我们只能选择一种情况,那么就采用分组背包的方法,每一组我们只取出贡献最大的情况。
学到的东西:背包九讲中的内容还要细细体会。
代码:
#include<iostream>
using namespace std;
int main()
{
int a,b,mx=0;
int i,j;
int m,n,v[61]={0},p[61]={0},q;
int v1[61]={0},v2[61]={0},p1[61]={0},p2[61]={0};
int f[50001]={0};
cin>>m>>n;
m/=10;
for(i=1;i<=n;i++){
cin>>a>>b>>q;
a/=10;
if(q!=0)
{
if(v1[q]==0){v1[q]=a;p1[q]=b;}
else {v2[q]=a;p2[q]=b;}
}
else{
v[i]=a;p[i]=b;
}
}
for(int i=1;i<=n;i++)
for(int j=m;j>=v[i];j--){//上述跟0 1背包的过程无异,下面求解留下哪一个价值最大,利用解决背包的do方法
f[j]=max(f[j],f[j-v[i]]+v[i]*p[i]);
if(j-v1[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v[i]]+v1[i]*p1[i]+v[i]*p[i]);
if(j-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v2[i]-v[i]]+v2[i]*p2[i]+v[i]*p[i]);
if(j-v1[i]-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v2[i]-v[i]]+v1[i]*p1[i]+v2[i]*p2[i]+v[i]*p[i]);
mx=max(f[j],mx);
}
cout<<mx*10<<endl;
return 0;
}
题目思路:我们仔细想想,其实这个题目一共只有5种情况, 1主件+0附件 1主件+1号附件 1主件+2号附件 1主件+1号附件+2号附件 0主件+0附件;也就是说上述五种情况我们只能选择一种情况,那么就采用分组背包的方法,每一组我们只取出贡献最大的情况。
学到的东西:背包九讲中的内容还要细细体会。
代码:
#include<iostream>
using namespace std;
int main()
{
int a,b,mx=0;
int i,j;
int m,n,v[61]={0},p[61]={0},q;
int v1[61]={0},v2[61]={0},p1[61]={0},p2[61]={0};
int f[50001]={0};
cin>>m>>n;
m/=10;
for(i=1;i<=n;i++){
cin>>a>>b>>q;
a/=10;
if(q!=0)
{
if(v1[q]==0){v1[q]=a;p1[q]=b;}
else {v2[q]=a;p2[q]=b;}
}
else{
v[i]=a;p[i]=b;
}
}
for(int i=1;i<=n;i++)
for(int j=m;j>=v[i];j--){//上述跟0 1背包的过程无异,下面求解留下哪一个价值最大,利用解决背包的do方法
f[j]=max(f[j],f[j-v[i]]+v[i]*p[i]);
if(j-v1[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v[i]]+v1[i]*p1[i]+v[i]*p[i]);
if(j-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v2[i]-v[i]]+v2[i]*p2[i]+v[i]*p[i]);
if(j-v1[i]-v2[i]-v[i]>=0)f[j]=max(f[j],f[j-v1[i]-v2[i]-v[i]]+v1[i]*p1[i]+v2[i]*p2[i]+v[i]*p[i]);
mx=max(f[j],mx);
}
cout<<mx*10<<endl;
return 0;
}
相关文章推荐
- P07: 有依赖的背包问题
- 计蒜客 蒜头君的购物口袋2 01背包问题
- 有依赖的背包问题
- 华为oj-购物单(依赖背包问题)
- 金明的预算方案(有依赖的背包问题)
- P07: 有依赖的背包问题
- hdu3449 有依赖的背包问题
- 有依赖的背包问题(背包九讲)
- P07: 有依赖的背包问题
- 选择附件物品选择(有依赖背包问题)
- 有依赖的背包问题——金明的预算方案
- P07: 有依赖的背包问题
- 背包问题总结第八讲——有依赖的背包问题
- Consumer (HDU_3449) 有依赖的背包问题
- hdu-1561 The more, The Better (树形dp入门,有依赖的背包问题
- P07: 有依赖的背包问题
- 有依赖的背包问题(背包九讲)
- CDOJ 1136 邱老师玩游戏 树形01背包 (有依赖的背包问题)
- 物品选择(有依赖背包问题)
- 背包问题之七 P07: 有依赖的背包…