算法提高之有依赖的背包问题

算法提高之有依赖的背包问题

  • 核心思想:分组背包 + 树形dp

    • 因为不取父节点,子节点取不了 所以dfs递归从子节点开始,向上返回
    • f[i][j]表示以i为根节点总体积不超过j的方案
  •   #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 110;int e[N],ne[N],h[N],idx;int v[N],w[N];int f[N][N];int n,m,root;void add(int a,int b)  //存图{e[idx] = b,ne[idx] = h[a],h[a] = idx++;}void dfs(int u)  //递归{for(int i=h[u];~i;i=ne[i])  //遍历子节点{int son = e[i];  //取子节点dfs(son);for(int j=m-v[u];j>=0;j--)  //确保能取到当前父节点 预留v[u]的体积{  for(int k=0;k<=j;k++)  //子节点占用的体积{//01背包 j从大到小 求f[u][j]时f[u][j-k]还没更新 即当前子节点没有算进去f[u][j] = max(f[u][j] , f[u][j-k] + f[son][k]);}}}//所有能放当前父节点的都放一下for(int j=m;j>=v[u];j--) f[u][j] = f[u][j-v[u]] + w[u]; //所有放不了父节点的全部清空 放不了父节点-->什么都放不了for(int j=0;j<v[u];j++) f[u][j] = 0;}int main(){cin>>n>>m;memset(h, -1, sizeof h);for(int i=1;i<=n;i++){int p;cin>>v[i]>>w[i]>>p;if(p == -1) root = i;else add(p,i);}dfs(root);cout<<f[root][m]<<endl;return 0;}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1412462.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

跟TED演讲学英文:A passionate, personal case for education by Michelle Obama

A passionate, personal case for education Link: https://www.ted.com/talks/michelle_obama_a_passionate_personal_case_for_education Speaker: Michelle Obama Date: April 2009 文章目录 A passionate, personal case for educationIntroductionVocabularyTranscriptS…

MNIST手写数字识别2.0

1.MNIST MNIST数据集是一个广泛使用的手写数字识别数据集&#xff0c;由美国国家标准与技术研究院&#xff08;NIST&#xff09;修改而成。它包含了60,000个训练样本和10,000个测试样本&#xff0c;每个样本都是一个28x28像素的灰度图像1。这些图像中的手写数字被标准化并居中…

超级简单羊毛绒吊顶天花板(华为公司iPhone茅台酒),花几分钟换回来几百块(非脚本软件)

项目简介&#xff1a;本项目旨在详细介绍当前市场上正规平台的溢价产品信息&#xff08;如华为、iPhone、茅台酒等&#xff09;&#xff0c;分享实际操作的限时抢购步骤&#xff0c;分析出货流程和策略。只需每天投入数分钟&#xff0c;点击操作&#xff0c;就有机会获得几百元…

Vulntarget-b

关于靶场的搭建 这里可以参考官网的说明文档&#xff0c;官方微信公众号&#xff1a;星期五实验室。 信息收集 首先确定了边界主机的IP地址&#xff1a;192.168.0.104&#xff0c;之后利用nmap对其进行信息收集&#xff1a; # nmap -sT -p- --min-rate 10000 192.168.0.104 S…

【Linux深造日志】运维工程师必会Linux常见命令以及周边知识!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位宝子们好啊&#xff01;我是博主鸽芷咕。日志这个东西我相信大家都不陌生&#xff0c;在 linxu/Windows 系统…

【软件开发规范篇】JAVA后端开发编程规范

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

【C++ | 关键字】C++ 关键字介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-04 0…

2022 HITCON -- fourchain-kernel

前言 很久没碰内核利用相关的东西了&#xff0c;这个题目都调了我两天&#xff08;&#xff1a;所以还是得熟能生巧啊 题目分析 内核版本&#xff1a;v5.10&#xff0c;所以不存在 cg 隔离、可以使用 userfaultfdkaslr、smap、smep 开启CONFIG_SLAB_FREELIST_RANDOM 和 CONF…

VMware worksation 17 简易安装Centos8.2、Redhat8.2、Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、VMware worksation 17 安装二、安装Centos8.2三、安装RHEL8.2四、安装Ubuntu16.04总结 前言 傻瓜式按照Linux系统&#xff0c;如果觉得简单&#xff0c;可以自定义设置&#xff0c;特别是配置一下磁盘空间大小&#xff0c;对以后排…

树莓派搭建wordpress,上传主题时显示wordpress上传的文件大小超过 php.ini 文件中定义的 upload_max_filesize 值

问题&#xff1a;wordpress上传的文件大小超过 php.ini 文件中定义的 upload_max_filesize 值 解决方案&#xff1a;进入树莓派shell界面 输入指令查找php.ini文件 find / -name ‘php.ini’ 修改php.ini文件 sudo vim /etc/php/8.1/cli/php.ini 找到 upload max filesize…

【Mac】graphpad prism for Mac(专业医学绘图工具) v10.2.3安装教程

软件介绍 GraphPad Prism for Mac是一款专业的科学数据分析和绘图软件&#xff0c;广泛用于生物医学和科学研究领域。它具有强大的统计分析功能&#xff0c;可以进行各种数据分析&#xff0c;包括描述性统计、生存分析、回归分析、方差分析等。同时&#xff0c;它还提供了丰富…

echarts 图表定时渲染刷新没效果?

定时刷新 在钩子中写定时器,定时执行 但是写了以后发现没效果&#xff0c;是因为vue3做了缓存,它发现你在第二次渲染的时候,节点一点没变,一次就省去了重新渲染&#xff1b;关键代码来了&#xff1a; 注意哈&#xff0c;注意哈&#xff0c;注意哈&#xff1a;我要开始装逼了&a…

图像压缩问题

图像压缩问题的bilibil讲解 1.问题引入 首先&#xff0c;图像是由像素组合成的&#xff0c;每个像素都有灰度值&#xff0c;灰度值是体现像素的颜色的。灰度值从0~255&#xff0c;灰度值占用的位数就是像素占用的位数。我们要存储一个图像就要存储它的所有像素。现在的问题是我…

关于装一个网易云音乐代理插件的操作方法

1.下载网易云代理插件&#xff08;文件的链接如下&#xff1a;&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1xNvqAhjdeBy5wlc9wCeKvA?pwdlvjt 提取码&#xff1a;lvjt 2.对代理软件进行解压如图1所示。 图1 解压文件图 3.在解压的压缩包中以管理员的身份打开红…

list 的模拟实现

目录 1. list 的实现框架 2. push_back 3. 迭代器 4. constructor 4.1. default 4.2. fill 4.3. range 4.4. initializer list 5. insert 6. erase 7. clear 和 destructor 8. copy constructor 9. operator 10. const_iterator 10.1. 普通人的处理方案 10.2. …

C# Web控件与数据感应之 TreeView 类

目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 ​根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;本文将继续介绍与…

docker desktop实战部署oracle篇

1、前言 oracle数据库官方已提供现成的镜像&#xff0c;可以直接拿来部署了。 由于项目中需要使用oracle数据库的分表功能&#xff0c;之前安装的是standard版本&#xff0c;无奈只能重新安装。网上查了一番&#xff0c;使用的方法都比较传统老旧&#xff1a;下载安装包手动安…

CrossOver支持的软件多吗 CrossOver支持软件列表 crossover兼容性查询

如果你是一个喜欢在Mac上工作的用户&#xff0c;但又不想放弃一些Windows上的优秀软件&#xff0c;那么可以考虑使用一些兼容工具来运行Windows程序。其中&#xff0c;CrossOver就是一款功能强大且受欢迎的兼容工具。那么&#xff0c;CrossOver到底能支持哪些Windows软件呢&…

opencv基础篇 ——(十四)轮廓拟合

轮廓拟合是指通过数学模型&#xff08;如直线、圆、椭圆或多边形&#xff09;来逼近或描述轮廓的形状。这一过程有助于简化复杂轮廓&#xff0c;提取其关键特征&#xff0c;或用于进一步的分析和识别。以下是轮廓拟合在OpenCV中的一些关键概念和函数&#xff1a; 多边形逼近&am…

基于点灯Blinker的ESP8266远程网络遥控LED

本文介绍基于ESP8266模块实现的远程点灯操作&#xff0c;手机侧APP选用的是点灯-Blinker&#xff0c;完整资料及软件见文末链接 一、ESP8266模块简介 ESP8266是智能家居等物联网场景下常用的数传模块&#xff0c;具有强大的功能&#xff0c;通过串口转WIFI的方式可实现远距离…