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 计算答案。