题意

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。

更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。

今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:

如果要买归类为附件的物品,必须先买该附件所属的主件。

每个主件可以有0个、1个或2个附件。

附件不再有从属于自己的附件。

金明想买的东西很多,肯定会超过妈妈限定的N元。

于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。

他还从因特网上查到了每件物品的价格(都是10元的整数倍)。

他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,…,jkj_1,j_2,…,j_kj1​,j2​,…,jk​,则所求的总和为:

v[j1]∗w[j1]+v[j2]∗w[j2]+…+v[jk]∗w[jk]v[j_1]∗w[j_1]+v[j_2]∗w[j_2]+…+v[j_k]∗w[j_k]v[j1​]∗w[j1​]+v[j2​]∗w[j2​]+…+v[jk​]∗w[jk​](其中*为乘号)

请你帮助金明设计一个满足要求的购物单。

思路

分组背包

先把所有主件存起来 然后把每个主件对应的副件存在一个 vector 中

对每个物品遍历 如果它是主件的话 就枚举一下取哪些它的副件 这里可以用二进制枚举

最后求出最大值即可

代码

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define mod 998244353
#define endl '\n'
#define int long long
using namespace std;
inline int gcd(int a, int b) { return b ? gcd(b, a%b) : a; }
inline int lowbit(int x) { return x & -x; }typedef long long LL;
typedef pair<int, int>PII;
const int N = 70;int n, m;
PII master[N]; //主件
vector<PII>servent[N]; //主件下面的附件
int f[32050];void solve() {cin >> m >> n;for (int i = 1; i <= n; ++i) {int v, w, q; cin >> v >> w >> q;if (q == 0) {master[i] = { v,v * w };}else servent[q].push_back({ v,v*w });}for (int i = 1; i <= n; ++i) {if (master[i].first) { //如果是一个主件for (int j = m; j >= 0; --j) {for (int k = 0; k < 1 << servent[i].size(); ++k) {int v = master[i].first;int w = master[i].second;for (int t = 0; t < servent[i].size(); ++t) {if ((k >> t) & 1) {v += servent[i][t].first;w += servent[i][t].second;}}if (j >= v)f[j] = max(f[j], f[j - v] + w);}}}}cout << f[m] << endl;
}signed main() {//int t; cin >> t;//while(t--)solve();return 0;
}

AcWing 487. 金明的预算方案 (有依赖关系的背包问题)相关推荐

  1. AcWing 487. 金明的预算方案

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

  2. 【ACWing】487. 金明的预算方案

    题目地址: https://www.acwing.com/problem/content/489/ 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...

  3. 487 金明的预算方案(分组背包问题扩展)

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

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

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

  5. 【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★

    P1064 金明的预算方案 背包其实就是把一个大问题拆分成若干个子问题,把一个要拿东西的动作按照题目要求分成若干个动作,分别枚举(DP其实就是非常的暴力),比较取最大值. 比如这道题,背包的物品之间是 ...

  6. P1064 金明的预算方案

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

  7. [LuoguP1064][Noip2006]金明的预算方案

    金明的预算方案(Link) 题目描述 现在有\(M\)个物品,每一个物品有一个钱数和重要度,并且有一个\(Q\),如果\(Q = 0\),那么该物件可以单独购买,当\(Q != 0\)时,表示若要购买 ...

  8. P1064 [NOIP2006 提高组] 金明的预算方案

    P1064 [NOIP2006 提高组] 金明的预算方案 题意: 每个物品有价格和价值,物品之间存在依赖关系(单向的),现在又n元钱,买哪些物品,即满足依赖关系又使得每件物品的价格与价值的乘积的总和最 ...

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

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

最新文章

  1. 【最精简写法】获取一维数组和对象数组最值:最大值、最小值,返回对象
  2. 中端存储趋势:x86、SSD缓存和虚拟化
  3. python写程序求1-3+5-7+...-99+101的值-python基本练习
  4. android button 行间距,android – 如何减少TextView行间距
  5. Robust Point Cloud Registration Framework Based on Deep Graph Matching (RGM) 简略分析
  6. 宁夏大学新华学院08计算机马宁,公 示
  7. Java学习笔记之设计模式(1)设计模式简介
  8. 技术员 Ghost Win 10(x86/x64)装机版/纯净版 201808
  9. 升职加薪必看!java简历包装工作经验
  10. 创建oracle系统dsn,timesten创建dsn
  11. 怎么用dos命令打开计算机,如何使用DOS命令打开C盘下的文件夹dos如何打开文件夹...
  12. Altium-Designer6.9安装报错Application Error
  13. win10OneNote登录微软 账号登陆出现错误码0x80190001
  14. 客户分级管理的意义和方法?如何高效的对客户进行分级?
  15. utools配置内网穿透
  16. 【iOS】—— 高德地图SDK基础使用
  17. word文档的只有横线的表格怎样做
  18. GG 数据初始化装载 说明 与 示例
  19. DL之Transformer:Transformer的简介(优缺点/架构详解,基于Transformer的系列架构对比分析)、使用方法(NLP领域/CV领域)、案例应用之详细攻略
  20. 计算机毕业设计文献查阅指引,毕业论文查阅文献记录_毕业论文指导记录文库_毕业论文指导记录12篇...

热门文章

  1. OpenJ_Bailian 2748
  2. 苹果手机语音备忘录在哪_苹果手机备忘录被家里宝宝误删了如何恢复呢?
  3. Pycharm报错:FutureWarning: `distplot` is a deprecated function and will be removed in a future version
  4. TCP,UDP,IP,数据链路层头部详解
  5. 普通最小二乘法的两种推导方法
  6. 自控原理入门详解**********
  7. 汉信码今发布:国家自主研发的二维码技术
  8. 第三节: 水泥混凝土路面构造特点
  9. mt管理器图片在哪个文件夹_微信apk用mt管理器 替换主界面背景图片是那个文件? 其他文件怎么替换 不要视频...
  10. AriaNg 无法连接 aria