CF1540B Tree Array

先写一下自己想到的部分:
考虑枚举一个根。
计算一个点对出现的概率。

对于我这种期望概率基本不会的人,差点就把这题切了。

自己想到的部分都没有假。
问题在于:
如何计算一个点对出现的概率。

考虑和这两个点的\(LCA\)是有关系的,我们考虑把这两点到\(LCA\)的链拉出来。
如果有一次操作涉及了这两条链的话,那么他们弹出堆顶的概率都是\(\frac{1}{2}\)
所以我们可以预处理当两条链的长度固定的话,前者的底比后者底先取到的概率。

\(f_{i,j} = \frac{f_{i - 1,j}\ \ \ +\ \ f_{i,j - 1}}{2}\)

直接算\(O(n^3log)\)

posted @ 2021-07-01 12:01  fhq_treap  阅读(119)  评论(0编辑  收藏  举报