树的重心 && 换根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\)(到达这个点时两个人都会获得)的权值,已经经过的点无法再次 ...
随机推荐
- 在java中动态执行js代码
说明 在jdk11就标注了要取消NashornScriptEngineFactory类,在jdk17正式移除,所以在17上得加入pom依赖 <dependency> <groupId ...
- TUF系统概述
TUF基本介绍 TUF 是一个为软件更新系统设计的安全框架,最初由纽约大学的 Secure Systems Lab 提出.它的目标是解决传统软件更新过程中的各种安全问题(如中间人攻击.回滚攻击.密钥泄 ...
- 使用 ftrace 跟踪内核丢包问题定位的实践
本文分享自天翼云开发者社区<使用 ftrace 跟踪内核丢包问题定位的实践>,作者:f****n 数据包的丢失可能会导致性能下降或服务中断.为了诊断内核中是否有丢包问题,我们可以使用 ft ...
- NFS常用操作
查看连接的NFS Client netstat | grep :nfs
- springboot~入门第三篇~与mybatis整合~(未完)
第二部分仅仅是从控制器到页面的跳转,但是没数据库的整合是不行的. 进入正题: springboot启动是要默认加载数据源的,之前是从application.properties,现在开始在 src/ ...
- Sql server 左连接查询最大记录
SELECT * FROM Billcode_in a LEFT JOIN Billcode_place b ON a.billcode=b.billcode AND b.id=(SELECT MAX ...
- electron中定义ipc的完美方案
前语 发现在主进程和渲染进程通信的设计中,很多代码都是重复的,导致最后非常臃肿,且不利于后期扩展 electron项目中 核心文件结构如下 | -- index.js | -- index.html ...
- Let’s Encrypt申请泛域名证书
域名分为主域名 test.com 和泛域名 *.test.com 如果又很多子域名,每个都要配置证书. 这也太麻烦了. 所以这次我们来学习 如何搞泛域名证书. 安装certbot certbot 官方 ...
- vite+vue3/react使用tailwindcss
vite+vue3/react使用 1.通过 npm 安装 Tailwind npm install -D tailwindcss postcss autoprefixer 2.创建您的配置文件 np ...
- 剑指offer 22 链表中倒数第K个节点.
简介 链表中倒数第K个节点. 思路 双指针, 然后一个指针延迟运行. code class Solution { public: ListNode* getKthFromEnd(ListNode* h ...