题意
给定一棵树,先等概率选择一个点打上标记,再在所有打过标记的点的未打标记的相邻点的集合中等概率抽取一点打上标记。全部打完后将所有节点按打标记的时间升序排列,求逆序对的期望个数。
题解
不难想到应该每次只看两个节点,单独算编号大的比编号小的那个先出现的概率。又想到要想给这两个节点打上标记,必会经过它们的lca,所以当确定根节点后一定是优先给它们的lca染色,概率等价于从lca出发先到编号大的节点的概率。
于是我们预处理出节点离lca距离的所有可能,定义
f
(
i
,
j
)
f(i,j)
f(i,j)为到两点距离分别为i,j,先到距离为i的那个节点的概率。倒序dp算出概率,具体式子是:
f
(
i
,
j
)
=
(
f
(
i
,
j
−
1
)
+
f
(
i
−
1
,
j
)
)
/
2
f(i,j)=(f(i,j-1)+f(i-1,j))/2
f(i,j)=(f(i,j−1)+f(i−1,j))/2
然后枚举根节点,再枚举两个节点统计答案就行。
小trick:可以不用统计分子分母,直接乘上分母逆元就行。