#P10153. [2017备战wc]复杂度

    ID: 9209 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 9 上传者: 标签>CF2600分治FFT概率论图论算法基础多项式递归

[2017备战wc]复杂度

复杂度(complexity)

题目描述

给定人民群众喜闻乐见的树的点分治步骤如下:

Algorithm 1 {
    f(component)
        total ← total + |component|
        选择一个与 component 连通的点 u
        删除点 u,产生若干个连通块
        对于这若干个连通块,调用 f 递归处理
}

对于 uu 的选择,我们一般选择 componentcomponent 的重心,也就是删掉 uu 之后使得最大连通块最小。

考虑随机点分治,也就是每次随机选择 componentcomponent 内的任意一个点。求随机点分治的期望时间复杂度,也就是 totaltotal 的期望大小。

输入格式

第一行一个数 nn,表示树的大小。

接下来 n1n-1 行,每行两个数 u,vu,v,表示一条 uuvv 的边。

输出格式

输出一行一个数,表示对于这棵树,随机点分治的期望时间复杂度。你的答案正确,当且仅当与标准答案的相对误差或绝对误差不超过 10910^{-9}

样例输入

3
1 2
2 3

样例输出

5.666666666

样例解释

对于任意一棵大小为 22 的树,随机点分治的复杂度总是 33

对于样例中给定的树,如果一开始选择 1133,则生成一棵大小为 22 的树,期望时间复杂度为:

23×(3+3)=4\frac{2}{3}\times(3+3)=4

如果选择 22,则生成两棵大小为 11 的树,期望时间复杂度为:

13×(3+2)=53\frac{1}{3}\times(3+2)=\frac{5}{3}

所以对于整棵树来说,期望时间复杂度为:

173\frac{17}{3}

数据范围

数据编号 nn\le 特殊条件 时限
0,10,1 1010 1s
2,32,3 5000050000 5s
4,54,5 n1n-1 个点度数为 11 3s
6..96..9 50005000 1s
10..1910..19 5000050000 3s