似懂非懂。。 class Solution: def diameterOfBinaryTree(self, root: TreeNode) -> int: self.ans=1 def depth(node): if not node: return 0 L=depth(node.left) R=d ...
分类:
其他好文 时间:
2019-11-22 23:33:47
阅读次数:
75
CF379F New Year Tree 分析: 树的直径就是每次求树中最远的两个点。 在一棵树上快速计算两两点之间的距离,可以用倍增。 设现在树上最远的两个点为L和R。 若在u处加两个点,直径会+1或者不改变。 对这两个点求一下到L的距离,和到R的距离,看会不会使答案更优,如果使得答案更优,就把L ...
分类:
其他好文 时间:
2019-11-11 21:44:06
阅读次数:
118
题面: 新年里,程序猿们往往会做一些有趣的事情。你则选择以往这棵树上加节点来取乐。 一个添加节点的操作是这样的: 1) 找到树上的一个叶子结点v 2)设现在树上有n个节点, 那么你现在会加入两个节点n+1和n+2,它们都会成为n的儿子.你的任务是在做q次这样的操作,并在每做完一次后计算一次树的直径。 ...
分类:
其他好文 时间:
2019-11-09 22:00:02
阅读次数:
236
问题描述 "LG CF455C" 题解 首先,题目给出了 $m$ 条边,对这 $n$ 个点, $m$ 条边组成的森林,跑出每棵树的直径,同时使用并查集维护树的连通性。 考虑合并两棵树的情况:设这两棵树的代表元为 $u,v$ ,这棵树的直径有三种来源: $u$ 这棵树的直径 $v$ 这棵树的直径 穿过 ...
分类:
其他好文 时间:
2019-11-07 21:56:10
阅读次数:
111
地址 https://leetcode-cn.com/contest/biweekly-contest-12/problems/tree-diameter/ 给你这棵「无向树」,请你测算并返回它的「直径」:这棵树上最长简单路径的 边数。 我们用一个由所有「边」组成的数组 edges 来表示一棵无向树 ...
分类:
其他好文 时间:
2019-11-03 14:21:23
阅读次数:
121
// http://acm.hdu.edu.cn/showproblem.php?pid=4612 // 大致题意: 给n个点和m条边,组成一个无向连通图,问 给我加一条边的权力(可连接任意两点)->让图的桥数量最小,输出此时桥的数量。(2<=N<=200000, 1<=M<=1000000) // ...
分类:
其他好文 时间:
2019-11-01 09:15:39
阅读次数:
83
Problem 一棵树的直径就是这棵树上存在的最长路径。现在有一棵n个节点的树,现在想知道这棵树的直径包含的边的个数是多少? Solution 随便找一个点,找最远的,再找新的点最远的。 当然我瞎搞的树状dp,子树分支最大的和次大的加起来就行。 Code include include includ ...
分类:
其他好文 时间:
2019-10-29 21:22:31
阅读次数:
123
传送门 "Luogu" 解题思路 显然的贪心策略,因为每次都要尽量使得删点后的收益最大。 我们可以求出树的直径(因为树上的任意一个节点与其距离最远的点一定是直径的端点)。 然后我们对于所有不是直径上的点,从叶子开始,从下往上删点,最后再由深而浅删掉直径。 最后输出答案即可。 细节注意事项 + 有些地 ...
分类:
其他好文 时间:
2019-10-26 23:04:41
阅读次数:
105
树的直径用两遍dfs扫一下就可以搞出来,预处理每一块的直径是2*n 考虑用并查集维护连通性,把答案保存在每个集合的根节点那儿即可 两棵树的直径合并起来后最小值如下: max(ans[_find(x)],ans[_find(y)],(ans[_find(x)]+1)/2+(ans[_find(y)]+ ...
分类:
其他好文 时间:
2019-10-10 22:02:44
阅读次数:
129
L. Tree 题意:给出k个颜色和一棵树,要求在树上对每个节点进行染色,之后,对于每个颜色i,求一颗最小生成树Ei,最后问最大的 E1 ∩ E2 · · · ∩ Ek,也就是这些最小生成树最多有几条公共边 思路: 一开始想的是求出树的直径,贪心的从两边往里放,之后求中间的长度就是公共边长度。wa了 ...
分类:
其他好文 时间:
2019-10-07 13:32:23
阅读次数:
83