- 博客(6)
- 收藏
- 关注
原创 codeforces树的重心_686D(div2)
给出一棵有n个节点的树,给出q组询问,每次输入x,查询以x为根时树的重心。先求出以1为根节点时树的重心,再利用换根法求出以每个节点为根时树的重心。
2024-02-17 22:21:50
275
原创 codeforcesLCA题_519E(div2)
使a的深度大于b的深度,找到a,b的中点,再找到距离中点1的点,输出a的节点数减去 b的节点数。让a和b跳到离(a,b)的LCA差一步的点,再输出n减去a的节点数和b的节点数。给出一棵有n个节点的树,有m次询问,每次询问距离(a,b)相等的点有多少个。不可能有答案,输出0。直接输出n就可以了。2.a和b的距离不为奇数。LCA来解答,同时也要分类讨论。
2024-02-17 21:51:34
200
原创 codeforces并查集_1263D
本题可以使用并查集来进行解答,我们可以将一个字符串中所有的字符与第一个字符合并,再在最后进行一遍检查。给你n个字符串,如果两个字符串中拥有相同的字符,则他们属于同一集合,问你有多少个集合。
2024-02-17 21:35:38
285
原创 c++LCA(最近公共祖先)
先使两个点的深度相等,如果此时两点所表示的数相同,则这个数就是这两个点的最近公共祖先,不然将它们不断上移,并保持它们表示的数不同,最后输出这两个移出的节点的父亲点。LCA就是在一棵树上求出两个点的最近公共祖先。如图,4和6的最近公共祖先为2。
2024-02-08 21:48:28
616
原创 c++树的重心
求出每个节点的子树节点数的最大值,再求出其中的最小值,输出子树节点数的最大值为这些节点中最小的的那个节点。在一棵树上,找到一个点使其最大子树的节点数最少,则这个点就是树的重心,如图,2是树的重心。
2024-02-08 21:13:36
723
原创 c++树的直径
我们可以先任意取一点进行一遍dfs求出离它最远的点a,再以求出的那个点再进行一次dfs求出离它最远的点b,此时。给定一棵树,每条边上有边权,树上距离最远的两个点之间的距离叫树的直径。如图,图中的直径为11。
2024-02-08 20:12:30
676
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人