首页 > 其他分享 >CF804D Expected diameter of a tree(期望+根号分治)

CF804D Expected diameter of a tree(期望+根号分治)

时间:2022-09-24 22:11:06浏览次数:146  
标签:diameter 联通 CF804D sqrt 枚举 期望 直径 根号

tag

期望,根号分治。

大致题意:

给你一个森林,每次询问两个点,求把两个点所在联通块连接起来生成的树的直径的期望。

分析:

如果是期望的话,只需要求出所有可能情况下的能生成的直径的和,再除以 \(siz_u\times siz_v\) ,就是期望。所以我们的目标就是怎样求所有情况下的直径的和。

考虑根号分治。我们把森林的按照点的数量分成大于 \(\sqrt n\) 的和小于等于 \(\sqrt n\) 的部分。然后是先考虑有一棵树的大小是小于等于 \(\sqrt n\) 的情况。我们可以枚举这棵树上的每个点,然后计算另外那棵的所有点能做出的贡献,这样枚举点不超过 \(\sqrt n\),所以我们要考虑怎样去快速求解另外那棵树能做出的所有贡献。

然后可以想到,连接两个联通块之后生成的直径有三种情况:一种是原来两个联通块的直径的一个,另外一种是被连接的两个点中形成一条更长的直径。我们现在已经枚举了其中一个点,所以就是剩下的一个点能延伸的最大长度加上枚举的点能延伸的最大长度再加 \(1\) 如果超过了两个联通块原本的最大直径,就说明连到这个点上,答案就是刚刚说的第二种情况否则就一定是第一种情况。也就是说我们一定能把一个联通块分成两部分,一部分是属于第一种情况,另一部分属于第二种情况。而且你可以发现,判断一个点属于那种情况之和它能延伸出的最长长度有关,所以我们可以先预处理出所有点能延伸的最大长度,排序,然后二分,找到一个分界点使得它左边都属于第一种,右边都属于第二种,第一部分的答案贡献好求,就数量乘两个联通块直径的较大值,第二部分的答案可以预处理前缀和,因为贡献可以拆开,变成枚举的点的贡献 \(+1\) 和现在的点的贡献。

然后有一块小于 \(\sqrt n\) 的你就会求了。

现在看都大于 \(\sqrt n\) 的情况。其实这部分可以预处理,就是提前对联通块按大小排序,然后对每个大于 \(\sqrt n\) 的块,枚举每个点,然后对于所有比它大的联通块像上面一样求答案。听起来好暴力,但是考虑到先是最多有 \(n\) 个点会被枚举,枚举另外一个联通块的复杂度是 \(O(\sqrt n)\) 的,然后上面再套个二分,就是 \(O(n\sqrt n \log n)\) 的。(这复杂度其实还是离谱,但是他应该可过)

所以总复杂度是 \(O(n\sqrt n \log n +q\sqrt n \log n)\),你需要控制一下常数什么的。

但是我还没调完((((

明天调好不好

标签:diameter,联通,CF804D,sqrt,枚举,期望,直径,根号
From: https://www.cnblogs.com/cc0000/p/16726814.html

相关文章

  • self-attention为什么要除以根号d_k
    参考文章:https://blog.csdn.net/tailonh/article/details/120544719正如上文所说,原因之一在于:1、首先要除以一个数,防止输入softmax的值过大,导致偏导数趋近于0;2、选......
  • AGC001 C Shorten Diameter(dfs)
    AGC001CShortenDiameter本题不难,不至于紫(解题思路看到\(n\leq2000\)就知道是\(O(n^2)\)没得跑了。关键如何\(O(n^2)\)。我们可以对\(k\)进行分类。如果\(......
  • python不用库求解根号N
    问题描述我们需要在不使用库的情况下求解\(\sqrt{n}\)。方法一:二分法令\(y=\sqrt{x}\),问题转换为求得y,使得\(y^{2}-x=0,(x>=0)\)。我们令\(f(y)=y^{2}-x\)。注意到:\[......
  • 2022杭电多校第十场1008 Minimum Diameter(树的直径的一些性质)
    解决本题分为两个部分:维护树的直径,合并多个树的直径树的直径有如下性质:1,从任一点出发,到达最远的点是直径的其中一端,从这一点出发可以到达最远的点是直径的另一端。或者说......
  • CF1092E. Minimal Diameter Forest
    \(\texttt{Difficulty:2000}\)题意给定\(n(1\len\le1000)\)个点,\(m(0\lem\len-1)\)条边组成的森林,现在增加一些边,是森林成为一棵树,并且其直径最小,求最小直径以及......