[动态规划] 洛谷P1064 金明的预算方案
来源:互联网 发布:hadoop 端口列表 编辑:程序博客网 时间:2024/04/30 14:50
洛谷P1064 金明的预算方案
题意:
每件物品都有一定的满意度,而且物品分主件附件,要买附件就必须要买主件,但是买主件不一定要买附件(一个主件最多有两个附件,也可能没有喔)
设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,……,jk,则所求的总和为:
v[j1]w[j1]+v[j2]*w[j2]+ …+v[jk]*w[jk]。(其中为乘号)
不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
怎么看着有点像树形DP…
但是我们如果不区分主件附件
就是…
背包?
好吧就是一维四状态的背包
代码:
#include <cstdio>#include <cstring>using namespace std;int f[32010],v[70],q[70],p[70],v1[70],q1[70],v2[70],q2[70];int mymax(int x,int y){ return x>y?x:y;}int main(){ int n,m; scanf("%d%d",&n,&m); /*q,v:如是主件则存在这里 q1,v1:如是附件一存在这里 q2,v2:如是附件二则存在这里*/ memset(f,-1,sizeof(f)); memset(q,0,sizeof(q)); memset(q1,0,sizeof(q1)); memset(q2,0,sizeof(q2)); memset(v,0,sizeof(v)); memset(v1,0,sizeof(v1)); memset(v2,0,sizeof(v2)); //请自动忽略以上的的OVO f[0]=0; for (int i=1;i<=m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if (c==0) { v[i]=a;q[i]=b; //存为主件 } else { if (q1[c]==0) {q1[c]=b;v1[c]=a;} else {q2[c]=b;v2[c]=a;} //存为附件一或附件二 } } for (int i=1;i<=m;i++) { for (int j=n;j>=v[i];j--) { //if(f[j]!=-1) { if (j-v[i]>=0) f[j]=mymax(f[j],f[j-v[i]]+v[i]*q[i]);//只买一个主件 if (j-v[i]-v1[i]>=0) f[j]=mymax(f[j],f[j-v[i]-v1[i]]+v[i]*q[i]+v1[i]*q1[i]);//买主件和附件一 if (j-v[i]-v2[i]>=0) f[j]=mymax(f[j],f[j-v[i]-v2[i]]+v[i]*q[i]+v2[i]*q2[i]);//买主件和附件二 if (j-v[i]-v1[i]-v2[i]>=0) f[j]=mymax(f[j],f[j-v[i]-v1[i]-v2[i]]+v[i]*q[i]+v1[i]*q1[i]+v2[i]*q2[i]);//买主件和两个附件 } } } int ans=0; for (int j=1;j<=n;j++) { if (f[j]>ans) ans=f[j]; //不一定用最多钱的就是最优的,扫一遍最大值 } printf("%d\n",ans); return 0;}
0 0
- [动态规划] 洛谷P1064 金明的预算方案
- 动态规划背包问题 洛谷P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷P1064 金明的预算方案
- 洛谷p1064金明的预算方案
- 洛谷P1064 金明的预算方案
- P1064 金明的预算方案
- P1064 金明的预算方案
- P1064 金明的预算方案
- [P1064]金明的预算方案
- luogu P1064 金明的预算方案
- P1064 金明的预算方案
- 洛谷 P1064 [NOIP2006 T2] 金明的预算方案
- 洛谷 P1064 金明的预算方案 依赖背包
- 【DP】洛谷 P1064 金明的预算方案
- 切换开关显示或隐藏密码
- find_first_of()和 find_last_of()
- php中parse_ini_file方法的使用
- 《Spark 官方文档》监控和工具
- JDBC2.0批处理数据
- [动态规划] 洛谷P1064 金明的预算方案
- JAVA8 新特性
- .net MVC5 webAPI 返回json设置
- 创建索引
- CentOS 6.5 编译安装 gcc-4.9.2
- linux 用户管理
- Android launcher3中QSBSearchBar会在主菜单界面显示的问题。
- Android Studio的git功能的使用介绍
- Linux 多线程编程----线程见同步问题