题目描述 我们定义一个点$x$是整棵树的重心(总共有$n$个点)当且仅当删掉点x后所有连通块的大小都不超过$n/2$。我们定义一次操作为删掉一条边再加上一条边,必须满足操作后整个图还是一棵树。给你一棵$n$个点的树,求每个点能否在一次操作后成为重心。 输入 第一行一个整数$n$; 接下来$n-1$行 ...
分类:
其他好文 时间:
2021-04-05 12:25:59
阅读次数:
0
原题链接 考察:树形dp 树的重心变种题 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。(不止一个) 模板题 树的重心 思路: 把树的某个点删去后,剩余部分是不包含父节点的子节点连通块.已经删去点的父节点连通块.通过dfs可以求出 ...
分类:
其他好文 时间:
2021-02-19 13:01:00
阅读次数:
0
6815.【2020.10.06提高组模拟】树的重心 Description 给定一棵大小为 n 的树, 求所有大小为 k 的连通块的编号较小的重心的权值和. Solution 首先, 一个点是重心的充要条件是 : 1.\(siz_u \geq \lceil \frac{k}{2} \rceil\) ...
分类:
其他好文 时间:
2020-10-10 16:38:59
阅读次数:
31
Cotree 题意: 由N个点构成两棵树,问在两颗树之间连接一条边之后,各点之间距离和的最小值为多少 题解: 进行两次DFS找到两颗树的重心,将两个重心连接起来,再进行一次DFS求出距离和即可 #include <iostream> #include <map> #include <vector> ...
分类:
其他好文 时间:
2020-09-18 01:35:09
阅读次数:
30
点分冶是一种在树上处理区间问题的一种方式,对于一个树上两点之间的的路径,如果我们设置一个指定节点p(为树的重心)为根节点,那么会存在两种情况: 路径经过了根节点p 路径包含于p的某一棵子树中 对于第二类我们可以递归进行处理,对于第一类,我们将路径分为"x~p"和"p~y"两段,从p开始进行dfs,求 ...
题目 点这里看题目。 分析 原来数据的奇怪结尾就可以拿来判断特征呀 40pts ~ 55pts 太简单就不说了。 75pts 考虑完全二叉树怎么做。 这里需要注意一点,就是:\(n=262143=2^{18}-1\) ,也就是说,数据实际上就是一棵满二叉树。 由于满二叉树具有极强的对称性,我们不难想 ...
分类:
其他好文 时间:
2020-07-24 21:50:33
阅读次数:
73
下面的三道题都属于入门难度。 CODE[VS] 树的中心 【解题思路】 第一题是树的重心板题,我们只需要更新每一个节点下面子树的大小(包含自己)和下面每一棵子树的最大值,然后我们更新最小的最大值就可以了(还要算上自己爸爸的那棵子树的大小就用总节点个数减该节点子树的大小即可!),最后返回最小的最大值。 ...
分类:
其他好文 时间:
2020-07-17 14:09:14
阅读次数:
70
当年我做这道题时还太嫩了,只能想到暴力。其实如果会了更高的科技这道题只要稍微对暴力优化一下就能AC(我也不会含泪75pts了)。 废话不说了,暴力的思路就是枚举每一条边然后求两个子树的重心。 直接求重心的复杂度是$O(n)$的,我们考虑优化到$O(\log)$。 我们想要求以$x$为根的子树的重心, ...
分类:
其他好文 时间:
2020-07-05 13:52:45
阅读次数:
55
题目做法大概就是点分治然后背包 前置知识 点分治 应用场景: 求树上距离为k的点对数|是否存在 路径为k且有限制条件 总之就是dfs暴力会超时的优化 点分治第一步首先要找到一棵树的重心 然后再根据重心来进行分治 judge i 距离当前根为i的点是否存在 dis i 点i与当前根的距离 点分治模板 ...
分类:
其他好文 时间:
2020-06-25 21:29:02
阅读次数:
48
定义 对于一颗n个节点的无根树,找到一个点,使得把树变成以该节点为根的有根树时,最大节点数最少。换句话说,删除这个节点后最大连通块(一定是树)的节点数最少。 分析 该问题跟树的最大独立集问题类似。先任选一个节点作为根,把无根树变成有根树,然后设d[i]表示以i为跟的子树的节点个数。只需要一次DFS。 ...
分类:
其他好文 时间:
2020-06-20 17:06:53
阅读次数:
65