codeforces1540B

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)$

 

上一篇:DOM-选择器


下一篇:3.1.1信息增益