考虑最小生成树的求解过程,即考虑每条边在什么情况下会被加入到最小生成树中。一条边能加入当且仅当把所有比它小的边加入之后这条边的两个端点仍然在两个集合内,也就是说集合数量减了一。于是可以令 \(F_x\) 代表已经加入了所有不大于 \(x\) 的边之后整张图连通块的期望个数,那么最小生成树的期望应该是:
\[\sum\limits_{i=1}^K(F_{i-1}-F_i)\times i \]化简可以得到:
\[-K+\sum\limits_{i=0}^{K-1}F_i \]令 \(F\) 的前缀和是 \(G\),于是就变成了求
\[G_{K-1}-K \]然后考虑怎么求。令 \(f_{x,y}\) 代表大小为 \(y\) 的图加入了所有不大于 \(x\) 的边之后的连通块数量,可以枚举其中某个连通块的大小。假设 \(g_{x,y}\) 代表大小为 \(y\) 的图加入了边之后联通的概率,那么应该有如下式子:
\[f_{x,y}=\sum\limits_{i=1}^yg_{x,i}\times(\frac{K-x}{K})^{i(y-i)}\times(f_{x,y-i}+1)\times\binom{y-1}{i-1} \]至于 \(g\) 的求法可以用相似的思路,有:
\[g_{x,y}=1-\sum\limits_{i=1}^{y-1}g_{x,i}\times(\frac{K-x}{K})^{i(y-i)}\times\binom{y-1}{i-1} \]\(F_x\) 即是 \(f_{x,N}\),如此去求复杂度是 \(O(KN^2)\) 的,可以拿到 \(50\) 分。要拿到后面的分需要观察一下式子,会发现 \(x\) 这一项只在中间的一个部分出现,而且这一部分的次数可以看成是跨两个集合的边数,而每条边只会被统计一次,所以可以说 \(F_{x}\) 是关于 \(x\) 的多项式,而且最高次不超过 \(\binom{N}{2}\)。由于 \(G\) 是 \(F\) 的前缀和,那么 \(G_x\) 中最高次应该不会超过 \(\binom{N}{2}+1\),于是要求 \(G_{K-1}\) 就只需要求 \(\binom{N}{2}\) 个 \(G\) 值然后拉格朗日插值一下就可以求出 \(G_{K-1}\) 了。复杂度是 \(O(N^4)\)。
标签:limits,加入,sum,times,001,binom,可以,Feyn From: https://www.cnblogs.com/dai-se-can-tian/p/16724185.html