LG7445「EZEC-7」线段树 题解

发现求 push_down 期望次数是每个非叶节点的 push_down 概率之和,所以我们只要求出 \(n - 1\) 个非叶节点的概率求和就行了。

设一个线段树上的区间是 \([l,r]\) ,那么一次操作包它的概率是 \(p_i = \dfrac{2 \times l(n-r+1)}{n \times (n+1)}\)

枚举包含的次数,有 \(ans_k = \sum\limits_{i=0}^{m}\dbinom{m}{i}p_k^i(1-p_k)^{m-i} \times f_i\),其中 \(f_i\) 表示 \(i\) 次从 \([-1,V]\) 中选出一个数,最后的和不为 \(0\) 的概率。

也就是 \(f_i = \dfrac{(V+2)^i - [x^0](\sum\limits_{j=-1}^{V}x^j)^i}{(V+2)^i}\), 不妨把 \(V\)\(2\),有 \(f_i = \dfrac{V^i-[x^0](\sum\limits_{j=-1}^{V-2}x^j)^i}{V_i}\)

考虑怎么对于 \(\forall i \in[0,m]\) 求出 \([x^0](\sum\limits_{j=-1}^{V-2}x^j)^i\) ,发现这里有个负指数,不好处理,不妨先平移一下:

\(F(x) = \dfrac{1-x^V}{1-x},则\)要求的是 \([x^0](\dfrac{F(x)}{x})^i\) ,也就是 \([x^0](\dfrac{x}{F(x)})^{-i}\),这样做是为了方便下面的拉格朗日反演。

\(G\) 为上面那个东西,\(H\)\(G\) 的复合逆。

使用另类拉格朗日反演:\([x^n]G^k = [x^{-k-1}]F'F^{-n-1}\),带进去有:

\([x^0]G^{-i} = [x^{i-1}]\dfrac{H'(x)}{H(x)} = [x^i]\dfrac{H'(x)}{\dfrac{H(x)}{x}}\) ,于是我们只要求出 \(H\) 就行了。

因为有 \(G(H(x)) = x\),所以 \(H - H^2 - x +xH^V \equiv 0\),可以用牛顿迭代法求出 \(H\)

但注意到多项式 exp 常数太大了,于是考虑取个阈值,在 \(V \geq lim\) 时可以 \(O(\dfrac{m^2}{V})\) 算出 \(f_i\),否则直接暴力多项式快速幂。

求出 \(f_i\) 以后,可以通过多项式多点求值或者分治 FFT 计算答案。

posted @ 2022-04-20 23:40  henrici3106  阅读(57)  评论(1)    收藏  举报