(牛客网)树型dp

树型dp

视频链接
(如果想购买网课,可以用我的邀请码)
用我的链接购买,我再反你10,一共花54多值
购买链接
不放心可以先加我好友2830872914

总试题链接

文章目录

  • 树型dp
  • 例题
      • NC15033 小G有一个大树
      • NC511788 没有上司的舞会(最大独立集)
      • poj1463 NC106060 Strategic game(树的最小点覆盖)
      • NC24953 CellPhoneNetwork(树的最小支配集)
      • 以上小总结:
      • NC50505 二叉苹果树
      • 延伸-->多叉树情况
      • NC202475 树上子链(树的直径)
      • NC22598 Rinne Loves Edges
      • NC210473 吉吉王国
  • 习题
    • NC13249 黑白树
    • NC15748 旅游
    • NC19782 Tree
    • NC200547 划分树
    • NC201400 树学
    • NC20811 蓝魔法师
    • NC51179 选课
    • NC51180 Accumulation Degree

例题

NC15033 小G有一个大树

题解链接
树的重心定义为:树中的一个点,删掉该点,使剩下的树所构成的森林中最大的子树节点数最少。
dp[i]=max(n-tot[i],max(tot[k]))

NC511788 没有上司的舞会(最大独立集)

题解链接
dp[i][0]不选i点时,i点及其子树能选出的最大快乐指数
dp[i][1]表示选择i点时,i点及其子树的最大快乐值
状态转移:
dp[i][0]=∑(max dp[j][0],dp[j][1])//当i点不选时,儿子选与不选
dp[i][1]=∑dp[j][0]+Hi//选了父亲,不能选儿子
(j是i的儿子)
边界:dp[i][0]=0 dp[i][1]=hi
结果:max(dp[root][0],dp[root][1])
本质:儿子与父亲不能同时选

poj1463 NC106060 Strategic game(树的最小点覆盖)

题解链接
试题:一个树,在一个节点放兵,周围的边就被守护,守护所有的边,问最少放多少兵
确定状态:
dp[x][1]以x为根的子树全被看住且在x上放置士兵的最少所需的士兵数量
dp[x][0]以x为根的子树全被看住且在x上没有 放置士兵的最少所需的士兵数量.
确定状态方程:
dp[x][1]=1+∑min(dp[i][0],dp[i][1])//x上放了士兵,x的儿子们可放可不放
dp[x][0]=∑dp[i][1]//如果x不放士兵,x的儿子必须放
结果min(dp[root][0],dp[root][1])
i是x的儿子
相当于我们在考虑x点时,x的子节点都是被考虑完的,x能否被覆盖完全取决于自身或x的儿子

NC24953 CellPhoneNetwork(树的最小支配集)

题解链接
最少用多少个点可以覆盖掉所有其他点
确定状态:
dp[x][0]:选点i,并且以点i为根的子树都被覆盖
dp[x][1]:不选i,i被其儿子覆盖
dp[x][2]:不选点i,i被其父亲覆盖(此时儿子可选可不选)
转移方程:
dp[i][0]=1+∑min(dp[u][0],dp[u][1],dp[u][2])(u是i的儿子)
被儿子被自己被父亲覆盖

dp[i][2]=∑(dp[u][1],dp[u][0])
i被父亲覆盖,u是i的儿子,u 可选可不选,但是u肯定不会被i所覆盖

对于dp[i][1]情况,i的儿子们中必须有一个取dp[u][0]
if(i没有子节点)dp[i][1]=INF
else dp[i][1]=∑min(dp[u][0],dp[u][1])+inc
对于inc
if(∑min(dp[u][0],dp[u][1])中包含某个dp[u][0])inc=0
else inc=min(dp[u][0]-dp[u][1])
选与不选
图一是自然被选
图二是强制选择
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

以上小总结:

最小点覆盖
每个点附近周围的边
最大独立集
父亲与儿子不能同时选,选最多的点
最小支配集
每个点附近周围的点

把子树当做一个整体

NC50505 二叉苹果树

详细题解
一棵二叉苹果树,且一定分二叉, 给定需要保留的树枝数量,求最多能留住多少苹果
确定状态:
dp[u][v]以u为根的子树保留j个分支可以得到的最大苹果数量

左右儿子都在左右儿子都在
左子树砍了
在这里插入图片描述
三种情况:
只保留左
dp[u][j]=dp[l][j-1]+a[j][l]
只保留右
dp[u][j]=dp[r][j-1]+a[j][r]
左子树保留x个,右子树保留j-2-x个
dp[u][j]=dp[l][x]+dp[r][j-2-x]+a[j][l]+a[j][r]
a是指每条边的苹果树数量

延伸–>多叉树情况

不断将一个子树合并到左子树里,始终处理的只有两个子树
强行当做二叉树处理
在这里插入图片描述

树上背包
dp[u][j]=max(dp[u][k]+dp[v][j-k-1]+w)
v是u的子节点,k∈[0,j]
w=a[u][v]//u与v之间的边权
(发现该公式类似于背包)
在这里插入图片描述

NC202475 树上子链(树的直径)

详细题解
每个点有点权
树的子链大小的这个子链上所有结点的权值和
在树T中找到最大的子链

树的直径:两边dfs
点权与边权转换

NC22598 Rinne Loves Edges

详细题解
题意:
n个节点m条边的无向连通图(为树,m=n-1)
选取一个点S,然后删除一些边,使得原图中所有除S之外度为1的点都不能到达S(让叶子节点和根节点不通)
删边的费用为边的权值

可以跑网络流,全局最小割
树的话,没必要

考虑x点的子树上每个叶子都与s不连通
两种情况:
把x和他的儿子断开
在x的子树上取把所有叶子节点断开
dp[x]表示x的子树上的所有叶子和根断开的最小代价
dp[x]=∑(min(dp[y],dis[x][y]))
y是x的儿子
在这里插入图片描述

NC210473 吉吉王国

详细题解
题目:
一棵无向树,切掉一些边,切断的边的权值不能超过m,使得叶子节点与根节点(1号)分离,要使得切断的边中最大的边权要尽可能小

最大值最小:二分
去二分最长能切的边
二分+判定
如果可以切就切断,如果x到y的边切不断(x是y的父亲节点),那就切y子树里面的节点,一直向下

习题

题目链接

NC13249 黑白树

NC15748 旅游

NC19782 Tree

NC200547 划分树

NC201400 树学

NC20811 蓝魔法师

NC51179 选课

NC51180 Accumulation Degree

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node 源项目定制化、打包并使用全过程讲解

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…

.Net Core中的Api版本控制

原文链接:API Versioning in .Net Core作者:Neel Bhatt简介Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制在本篇博客中,我们将说明一下如何在.Net Core Api项目中使用Api版本控制。本篇博客中测试项…

Visual Studio 2017 与 Visual Studio for Mac 支持更新

微软在博客中简单介绍了关于 VS 2017 和 VS for Mac 项目的支持计划:https://blogs.msdn.microsoft.com/visualstudio/2018/10/05/visual-studio-2017-and-visual-studio-for-mac-support-updates/。微软表示,在目前努力开发 Visual Studio 2019 的同时&…

ASP.NET Core中使用表达式树创建URL

当我们在ASP.NET Core中生成一个action的url会这样写:var url_urlHelper.Action("Index", "Home");这样的写法存在的问题在于我们传递了两个字符串类型的参数,而我们又无法避免对action和controller做重命名操作, 例如将index重命名…

在你的andorid设备上运行netcore (Linux Deploy)

最近注意到.net core 的新版本已经开始支持ARM 平台的CPU, 特意去Linux Deploy 中尝试了一下,真的可以运行 Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.9.65-perf armv8l)* Documentation: https://help.ubuntu.com/Ubuntu 16.04 LTS [running via Linux Deploy]La…

持续集成配置之Nuget

Intro本文是基于微软的 VSTS(Visual Studio Team Service) 做实现公众类库的自动打包及发布。之前自己的项目有通过 Github 上的 Travis 和 Appveyor,这次主要是用 VSTS 来做的,对比 appveyor 和 vsts 上的持续集成,vsts 上微软把常用的工具和…

【每日一题】8月7日题目精讲—双栈排序

来源:牛客网 文章目录题目描述题意:题解:代码:时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 131072K,其他语言262144K 64bit IO Format: %lld题目描述 Tom最近在研究一个有趣的排序问…

手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)

前言什么是APM?全称:Application Performance Management可以参考这里:现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能…

牛客练习赛 64——错排

A.怪盗-1412 111…1⏟⌊n2⌋444…4⏟m111…1⏟⌈n2⌉222…2⏟k\begin{matrix} \underbrace{ 111\dots\ 1} \\ \lfloor \frac{n}{2} \rfloor \end {matrix}\begin{matrix} \underbrace{ 444\dots\ 4} \\ m \end{matrix}\begin{matrix} \underbrace{ 111\dots\ 1} \\ \lceil \fra…

牛客网状压dp

状压dp 视频链接 (如果想购买网课,可以用我的邀请码) 用我的链接购买,我再反你10,一共花54多值 购买链接 不放心可以先加我好友2830872914 总试题链接 文章目录状压dp预备知识——位运算例题:引入&#x…

【线段树】海报(loj 3264)

正题 loj 3264 题目大意 有一个环,环上n个点,权值为a,有m次修改,每次修改一个aia_iai​,然后让你选取一些数,使环上不存在连续四个以上的数被选取,让你求所选数的最大权值和 解题思路 不难想…

.Net Core功能开关实战

为了快速发布开发完成的功能,企业通常会以比较快的迭代周期持续发布。但是由于某些 原因或场景,需要在发布的时候将某些功能隐藏起来或者小规模的开放(例如只有某些特定用户可以使用、或者特定日期开放),通过使用功能开…

学习究竟是为了什么?

今天无意中看到一句话,人如果停止了学习,就开始走向失败。这句话其实应该送给每一个面临30岁焦虑期的开发者,同时也应该成为每一个开发者内心的真实写照。 想问一下大家一个问题,多久没有学习新的知识呢?尤其…

Strategic game

来源:牛客网: 时间限制:C/C 2秒,其他语言4秒 空间限制:C/C 10000K,其他语言20000K 64bit IO Format: %lld题目描述 Bob enjoys playing computer games, especially strategic games, but sometimes he c…

ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

上个月15日,上海MVP做了一次线下的技术分享活动,我分享的主题是《快速构建容器化的ASP.NET Core应用程序》,有关这次活动的简报,可以参考这里。另外,我的主题分享的PPT也可以点击这里下载。由于线下活动时间紧迫&#…

现代软件工程的《构建之法》

要想了解世界,就必须亲自来打造它。—— 帕韦泽(Cesare Pavese)国庆假日期间,我重读了邹欣老师的《构建之法》一书。我从事软件行业相关工作超过15年,每每在被问到给在校计算机专业大学生的学习建议时,我都…

【每日一题】8月10日题目精讲—排座椅

来源:牛客网: 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 51200K,其他语言102400K 64bit IO Format: %lld题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的…

使用Consul做服务发现的若干姿势

从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后来逐步应用于生产环境,并总结了少许使用经验。最开始使用Consul的人不多,为了方便交流创建了一个QQ群,这两年微服务越来越火,使用Consul的人也…

【每日一题】8月11日题目精讲—矩阵消除游戏

来源:牛客网: 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 牛妹在玩一个名为矩阵消除的游戏,矩阵的大小是n行m列,第i行第…

asp.net core集成CAP(分布式事务总线)

一、前言感谢杨晓东大佬为社区贡献的CAP开源项目,传送门在此:.NET Core 事件总线,分布式事务解决方案:CAP 以及 如何在你的项目中集成 CAP【手把手视频教程】,之前也在工作中遇到分布式数据一致性的问题,也一直都是基于…