树的重心 && 换根dp 学习笔记
定义
无根树中满足删除该节点后最大连通块节点数最小的节点,其特性使得生成的子树规模最为均衡
简单来说就是找到一个节点,将这个节点设为根节点,使得每个节点到根节点距离的总和最小
树的重心不可能超过两个
方法
方法1
对于每一个节点我们将他的值设为他的子树的节点个数 + 1,如果这个节点的值小于等于 \(n / 2\) (\(n\) 为这棵树的节点个数),那么这个节点就是树的重心。
可以通过dfs解决此问题
方法2
树的重心 && 换根dp 学习笔记的更多相关文章
- 换根 DP 学习笔记
前言 没脑子选手什么都不会. 正文 先来写一下换根 DP 的特点或应用方面: 不同的点作为树的根节点,答案不一样. 求解答案时要求出每一个节点的信息. 无法通过一次搜索完成答案的求解,因为一次搜索只能 ...
- [BZOJ4379][POI2015]Modernizacja autostrady[树的直径+换根dp]
题意 给定一棵 \(n\) 个节点的树,可以断掉一条边再连接任意两个点,询问新构成的树的直径的最小和最大值. \(n\leq 5\times 10^5\) . 分析 记断掉一条边之后两棵树的直径为 \ ...
- 换根DP+树的直径【洛谷P3761】 [TJOI2017]城市
P3761 [TJOI2017]城市 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有ri座城市,<-1条高速公路,保证了任意两运城市之间都可以通过高速公 ...
- [算法学习] 换根dp
换根dp 一般来说,我们做题的树都是默认 \(1\) 为根的.但是有些题目需要计算以每个节点为根时的内容. 朴素的暴力:以每个点 \(u\) 作为 \(root\) 暴力dfs下去,复杂度\(O(n^ ...
- 模拟赛:树和森林(lct.cpp) (树形DP,换根DP好题)
题面 题解 先解决第一个子问题吧,它才是难点 Subtask_1 我们可以先用一个简单的树形DP处理出每棵树内部的dis和,记为dp0[i], 然后再用一个换根的树形DP处理出每棵树内点 i 到树内每 ...
- 树形DP 学习笔记
树形DP学习笔记 ps: 本文内容与蓝书一致 树的重心 概念: 一颗树中的一个节点其最大子树的节点树最小 解法:对与每个节点求他儿子的\(size\) ,上方子树的节点个数为\(n-size_u\) ...
- 2018.10.15 NOIP训练 水流成河(换根dp)
传送门 换根dp入门题. 貌似李煜东的书上讲过? 不记得了. 先推出以1为根时的答案. 然后考虑向儿子转移. 我们记f[p]f[p]f[p]表示原树中以ppp为根的子树的答案. g[p]g[p]g[p ...
- 小奇的仓库:换根dp
一道很好的换根dp题.考场上现场yy十分愉快 给定树,求每个点的到其它所有点的距离异或上m之后的值,n=100000,m<=16 只能线性复杂度求解,m又小得奇怪.或者带一个log像kx一样打一 ...
- 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)
题意 题目链接:https://www.luogu.org/problem/P4827 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...
- Acesrc and Travel(2019年杭电多校第八场06+HDU6662+换根dp)
题目链接 传送门 题意 两个绝顶聪明的人在树上玩博弈,规则是轮流选择下一个要到达的点,每达到一个点时,先手和后手分别获得\(a_i,b_i\)(到达这个点时两个人都会获得)的权值,已经经过的点无法再次 ...
随机推荐
- CentOS使用yum update更新时不升级内核的方法
RedHat/CentOS/Fedora使用 yum update 更新时,默认会升级内核.但有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦.所以 ...
- Git使用随记
前言 记录Git软件使用相关的流程.命令. 注:这不是一份专业的教程. Git是什么? Git 是一个用于管理源代码的分布式版本控制系统. 版本控制系统会在您修改文件时记录并保存更改,使用户可以随时恢 ...
- uni-app项目怎么实现多服务环境切换
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE可视化的运行和打包也让开发体验也非常棒,公司项目就是主推uni-app, ...
- 修改AndroidStudio的Boot Java Runtime for the IDE后,IDE打开报错无法运行
修改AndroidStudio的Boot Java Runtime for the IDE后,IDE打开报错无法运行,解决方法 一.问题 我想在AndroidStudio里使用markdown支持 ...
- Visual Studio 2022 中的 EF Core 反向工程和模型可视化扩展插件
前言 在 EF 6 及其之前的版本数据库优先模式(Database First)是可以在 Visual Studio 中通过可视化界面来操作完成的,但是到了 EF Core 之后就不再支持了(因为模型 ...
- BAPI_OUTB_DELIVERY_CHANGE 删除DN
"""回滚数据 删除DN, CLEAR: l_header_data_chg,l_header_control_chg. l_header_data_chg-deliv_ ...
- Flex布局,绝对定位,层叠布局Stack的详细讲解
Flex布局 Flex布局也叫做:伸缩布局,当子盒子的总和溢出父盒子时默认进行压缩显示 线性布局的原理是基于Flex来设计的. Flex布局默认主轴是:水平向右的,交叉轴垂:直向下 单行或者单列的情况 ...
- 数栈产品分享:Kafka—实时离不开的那个TA
一.前言 随着技术不断的成熟及市场需求的日益旺盛,实时开发已经成为当前大数据开发不可或缺的一部分.在整个实时开发的链路中,数据采集需要写入到Kafka,数据处理也需要使用到Kafka.今天我们就针对K ...
- 6-nn.Module模块使用
1. nn.Module模块使用 ① nn.Module是对所有神经网络提供一个基本的类. ② 我们的神经网络是继承nn.Module这个类,即nn.Module为父类,nn.Module为所有神经网 ...
- ATE测试工程师是做什么的?
这是IC男奋斗史的第28篇原创 本文1437字,预计阅读4分钟. 前两天我们一个做封装的同事问我说,目前ATE测试工程师在就业市场上很火,很多公司都在急招,猎头也让他帮忙有偿推荐候选人.ATE测试工程 ...