洛谷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));//请自动忽略以上的的OVOf[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;
}

[动态规划] 洛谷P1064 金明的预算方案相关推荐

  1. 不止代码:洛谷P1064 金明的预算方案+P2014选课(依赖背包)

    文章目录 题目描述 总结 解析 解法1 解法2 代码 解法3 代码 题目描述 金明的预算方案 选课 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...

  2. 洛谷 P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...

  3. 洛谷 P1064 金明的预算方案【有依赖的分组背包】

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...

  4. Java实现 洛谷 P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元 ...

  5. 洛谷——1064金明的预算方案————有依赖的背包

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...

  6. P1064 金明的预算方案

    P1064 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置 ...

  7. P1064 金明的预算方案(分组背包)

    https://www.luogu.org/problemnew/show/P1064 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  8. 【动态规划】Vijos P1313 金明的预算方案(NOIP2006提高组第二题)

    题目链接: https://vijos.org/p/1313 题目大意: m(m<=32000)金钱,n(n<=60)个物品,花费vi,价值vi*ci,每个物品可能有不超过2个附件,附件没 ...

  9. luogu P1064 金明的预算方案

    传送门 这题最难了(认真 发现自己之前搞得树上背包又凉了... 写了一个O(n*V)的dfs序优化贴一下吧 50 minutes later... MD这题怎么D不出来 结果这题不是典型的树dp 因为 ...

最新文章

  1. ubuntu安装使用不同版本的gcc
  2. 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
  3. xp系统怎么弄清微软服务器名称,xp系统电脑怎么远程云服务器
  4. 你真的很熟分布式和事务吗?
  5. 【深度学习】2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?...
  6. Git Issues
  7. 晚上运动对身体好吗?
  8. Grafana实现zabbix数据可视化展示
  9. [推荐]13款js编辑器大全
  10. 利润表模板excel_年薪60w财务总监:工作八年,这10个Excel必备财务系统,效率翻倍...
  11. python实验五答案_python程序设计 实验指导答案
  12. Windows 7专业版安装VS2005与WinCE6.0开发环境
  13. 【Pillow库】图片操作
  14. storm风暴英雄 tempo_19.4版本TempoStorm 风暴英雄天梯环境报告
  15. 网络分层和对应的协议列表
  16. 简悦+Logseq 搭建本地化个人知识库
  17. ios 按钮文字下划线_iOS实现一段文字中部分有下划线,并且可以点击
  18. c语言怎样写积分程序,C语言实现定积分求解方法
  19. hdu 4745 区间dp
  20. 简单读!Mybatis源码(一)一条select的一生

热门文章

  1. 把酸性体质改变成碱性体质的秘密
  2. 统计之均值中位数众数全距四分位数以及箱线图展示
  3. Failed to send a request to Slack API server: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certif
  4. 微信视频号绑定公众号教程分享
  5. [构造]triples I
  6. Word文件打开的时候需要输入密码?
  7. mysql ssd 应用_MySQL Disk--SSD 特性
  8. android移植(二)-4的尝试移植过程
  9. MSCOCO检测数据集类别中文名
  10. 3种重新启动或强制关闭任何Mac死机的方法