51nod1803 森林直径】的更多相关文章

[传送门] 考虑计算直径的 dp 方法. $d[u]$ 表示以 $u$ 为根的子树能 $u$ 能走到的最远距离 $dp[u]$ 表示以 $u$ 为根的子树的直径那么每次dfs一个子节点后$dp[u] = max(d[u] + d[v] + 1, dp[u])$$d[u] = max(d[v] + 1, d[u])$注意顺序一反就错了.这里并没有考虑到 $u$ 是某个节点的儿子是,路径可以往父节点走的情况,但是这是对的.因为如果这种情况存在,那么我们在递归回父节点是就可以更新到.所以直径取最后 d…
题目描述 你将要游览一个有N个岛屿的公园.从每一个岛i出发,只建造一座桥.桥的长度以Li表示.公园内总共有N座桥.尽管每座桥由一个岛连到另一个岛,但每座桥均可以双向行走.同时,每一对这样的岛屿,都有一艘专用的往来两岛之间的渡船.  相对于乘船而言,你更喜欢步行.你希望所经过的桥的总长度尽可能的长,但受到以下的限制.  • 可以自行挑选一个岛开始游览.  • 任何一个岛都不能游览一次以上.  • 无论任何时间你都可以由你现在所在的岛S去另一个你从未到过的岛D.由S到D可以有以下方法:  o 步行:…
2021.08.09 P7238 迷失森林(树的直径) P7238 「DCOI」迷失森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的直径两种求法:两次dfs.树形dp 题意: 首先给出一棵以 11 为根,nn 个结点的树,定义为「单位树」. 现有 nn 个结构与「单位树」完全相同的树,要将 nn 个树再用 n-1n−1 条边连接起来. 为方便叙述,用符号 (a,b)(a,b) 表示结点 aa 所代表树中,编号为 bb 的结点. 连接方式如下: 将 nn 棵…
Island(IOI 2008) Description 你准备浏览一个公园,该公园由 N 个岛屿组成,当地管理部门从每个岛屿 i 出发向另外一个岛屿建了一座长度为 L_i 的桥,不过桥是可以双向行走的.同时,每对岛屿之间都有一艘专用的往来两岛之间的渡船.相对于乘船而言,你更喜欢步行.你希望经过的桥的总长度尽可能长,但受到以下的限制: 可以自行挑选一个岛开始游览. 任何一个岛都不能游览一次以上. 无论任何时间,你都可以由当前所在的岛 S 去另一个从未到过的岛 D.从 S 到 D 有如下方法: 步…
[FJWC 2019] 森林 样例输入 0 5 1 0 0 2 样例输出 1 2 3 3 我们发现,答案就是直径加上直径上某个点出发,不经过其他直径上的点的最长链.这里的直径可以是任意一条直径. 首先我们每次只加一个点,所以我们很好维护新的直径.假设旧直径的两个端点是\((A,B)\),则加入点\(X\)后新的端点可能是\((A,B),(A,X),(B,X)\). 然后我们考虑求"直径上某个点出发,不经过其他直径上的点的最长链". 我们知道,\(Lct\)有虚边和实边.我们给每个节点开…
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1367.html 题目传送门 - 51Nod1367 题意 有一棵N个点的树,树中节点标号依次为0,1,2,...N-1,其中N<=500000.树中有N-1条边,这些边长度不一定相同.现在要把树中一些边删除,设删除了K条边(K>=0,即可以不删除任何边),由树的性质可知,该树将被分割为一个含有K+1棵树的森林.称一个森林是"完美森林",要求这个森林中的每一棵树满足:该树的直径…
第一题第二题鉴上我前几篇博客poj1985 poj1849:https://www.cnblogs.com/Tyouchie/p/10384379.html 第三题:数的重心:poj1655 来自sjh大佬的版子,邻接表写法 #include<algorithm> #include<bitset> #include<cctype> #include<cerrno> #include<clocale> #include<cmath> #…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4514 这题主要是叫我们求出树的直径,在求树的直径之前要先判断一下有没有环 树的直径指的就是一棵树上面距离最远的两点的距离,有时也可以指最远的两点之间的路径. 至于树的直径怎么求,我们首先要知道一个结论,树上面随便取一点,离这一点最远的那个点一定是树的直径上面的两点中的一点 证明的博客:https://www.cnblogs.com/wuyiqi/archive/2012/04/08/2437424.…
题目描述 给你 $n$ 个点,支持 $m$ 次操作,每次为以下两种:连一条边,保证连完后是一棵树/森林:询问一个点能到达的最远的点与该点的距离.强制在线. $n\le 3\times 10^5$ ,$m\le 5\times 10^5$ . 题解 树的直径+并查集+LCT 与直径相关的结论1:与一个点距离最大的点为任意一条直径的两个端点之一. 与直径相关的结论2:两棵树之间连一条边,新树直径的两个端点一定为第一棵树直径的两个端点和第二棵树直径的两个端点这四者中之二. 于是问题就变简单了,用并查集…
题目链接:http://codeforces.com/problemset/problem/455/C 题意: 给你一个森林,n个点,m条边. 然后有t个操作.共有两种操作: (1)1 x: 输出节点x所在树的直径. (2)2 x y: 如果x,y不在同一棵树上的话,用一条边连接x,y所在的树,并且使得到的新树的直径尽可能小. 题解: 首先对于初始状态,算出每一棵树的直径d[find(i)]. 每次合并树的时候,因为要尽可能让新树直径变小,所以显然这条边要分别连接两棵树直径的“中点”. 所以新树…