codeforces1540B
题目:https://codeforces.com/contest/1540/problem/B
sol:
一整年没有写题回来练练手,发现啥都不会了。
可以枚举一个根 $rt$ ,再枚举点对 $(a,b)$ ,其中 $a \leq b$;
出现逆序对需要 $b$ 在 $a$ 之前出现在序列里。我们希望求出此概率 $p$。
令 $l=lca(a,b)$ 。
从 $rt$ 走到 $l$ 对于 $p$ 没有影响。
考虑从 $l$ 走到 $a$ 或 $b$ :有 $p0$ 的概率往 $a$ 走, $p0$ 的概率往 $b$ 走, $1-2 \times p0$ 的概率走其他。
因为 $a$ , $b$ 都是等概率的 $p0$ , $p0$ 其实不重要。
令 $f[x][y]$ 表示每次等可能的将 $x$ 或 $y$ 减 $1$ ,$y$ 先于 $x$ 减到 $0$ 的概率。
有 $f[x][y]=(f[x][y-1]+f[x-1][y])/2$ ;
枚举时每次取 $p=f[dist(l,a)][dist(l,b)]$ 即可
效率 $O(n^3 log n)$