首页 > 其他分享 >CodeForces - 708C Centroids

CodeForces - 708C Centroids

时间:2022-11-10 20:59:47浏览次数:38  
标签:结点 子树 重心 CodeForces Centroids 708C dfs 节点 为根

题意:给出一棵有n个结点的树,对于每一个结点,如果任意删除一条边后再任意添加一条边能使这个结点成为这棵树的重心,则输出1;反之输出0。

解:重心的特点:以重心为根节点时,其最大子树的节点数最小,且每个子树大小不超过n/2。考虑更换一条边的操作,如果这个结点当根节点时,有一棵子树大小超过n/2,那么砍掉这颗子树不超过n/2的最大子树,并把它接到根节点来。如果此时最大子树仍超过n/2,那么这个结点不可能成为重心。

对于每一个结点都O(n)地判断一遍显然是会超时的,考虑类似于换根的操作。先以随便一个结点作为根,dfs出每个结点的子树大小。然后再dfs一遍,进入一个结点时,其父结点和之前的结点为当前结点的子树。递归进入的时候记录之前小于等于n/2的最大子树和次大子树(当进入的结点在最大子树中时,应该传次大子树的值)。然后比较判断。

cf官方题解的做法更简洁。一开始以树的重心为根进行dfs,这样只要考虑之前结点形成的子树。已知当前子树外其他结点加起来大于等于n/2,因此又只要考虑原来第一和第二大的子树。这样事情就很简单了。

标签:结点,子树,重心,CodeForces,Centroids,708C,dfs,节点,为根
From: https://www.cnblogs.com/capterlliar/p/16878634.html

相关文章

  • Codeforces Round #617 (Div. 3) ABCD
    https://codeforces.com/contest/1296临时和Juang一起组队打的这场,本来定的分开打另一场,哈哈题目挺友好的,Juang70minAK了,我只写了四题,剩下的题目待补A.Arraywith......
  • Codeforces Round #702 (Div. 3) G
    G.OldFloppyDrive维护一个前缀和再维护一个单调的前缀和因为我们后面的数花费更大只有贡献更大的时候才会有用这样就好做了对于每个查询我们知道他最少的轮数肯定......
  • Codeforces Round #704 (Div. 2) D
    D.Genius'sGambit构造要是a>=k的构造很好想出来但是a+b-1>k&&k>a时其实也可以构造出来我们考虑让中间的一些1经过减法变成0然后到高位时再与低位的1相减例如:1111......
  • Codeforces Global Round 16 F | CF1566F Points Movement
    https://www.luogu.com.cn/problem/CF1566Fhttps://codeforces.com/contest/1566/problem/F这类有关线段的问题我通常都是先观察线段的包含/交对线段是否保留的影响,以约......
  • Codeforces Round #740 (Div. 1, based on VK Cup 2021 - Final (Engine)) B
    B.UptheStrip考虑dpdp[i]表示当前i位置的cnt考虑转移我们对于第一个操作显然只用维护一个后缀和即可dp[i]+=s[i+1]对于第二个操作也很简单我们知道i的值z除一......
  • Codeforces Round #715 (Div. 1) A
    A.BinaryLiterature我们观察发现就是找两个串要是最长公共子序列大于等于n的我们就一定可以构造出一个出来但是传统的最长公共子序列是n2的我们考虑一些特殊的性质......
  • codeforces 1750_D
    https://codeforces.com/contest/1750/problem/D#include<iostream>#include<vector>#include<cmath>#include<map>#include<unordered_map>#include<unordered_set>......
  • Codeforces试题乱做 Part9
    他挥毫泼墨落笔她舞袖梦里佳期戏中情戏中意陌路人相逢在花天锦地\(\text{[CF1736E]SwapandTake}\)\(\color{green}{\text{[EASY]}}\)我们考虑最终最优的答案中......
  • CF1743 Codeforces Round #832 (Div. 2)
    A.TwoGroups签到题,把正负数分开放再相减即可.赛后从大佬们那得知也可以直接加的,最后取个abs.膜拜大佬!B.BANBAN构造.显然每次交换最多可以破坏前面一个BAN,破坏后面......
  • Codeforces Subsequences
    题目:KarllikesCodeforcesandsubsequences.HewantstofindastringoflowercaseEnglishlettersthatcontainsatleastksubsequencescodeforces.Outofall......