Luogu P7445「EZEC-7」线段树
Luogu P7445「EZEC-7」线段树
显然一个点是否被 \(\text{push_down}\) 仅取决于所有完全包含它的操作区间权值之和
那么可以考虑对于每个节点计算概率,然后累加
反向计算一个节点不被 \(\text{push_down}\) 的概率,即权值之和为 \(0\) 的概率
而每个节点有自己被覆盖的概率,即 \(p_i=\cfrac{l\cdot (n-r+1)}{n(n+1)/2}\)
而覆盖的次数 \(c\) 决定了这个概率贡献的权值,即 \(p_i^c(1-p_i)^{m-c}\)
由此得到一个思路:
先通过计算得到 \(k\) 次覆盖权值为0的函数 \(A(x)\)
容易发现这样得到每个点的概率为: \(A(\cfrac{p_i}{1-p_i})(1-p_i)^m\)
Naive地带入多点求值,就能暴力得到
计算 \(k\) 次被覆盖权值和为0的方案数
容易发现就是
\(\displaystyle [x^0](\sum_{i=-1}^V x^i)^k=[x^0](x^{-1}\frac{1-x^{V+2}}{1-x})^k\)
暴力展开这个式子会需要对于 \((x^{V+2}-1)^k\) 有用的项只有 \(\frac{k}{V+2}\) 项
即原式 \(\displaystyle =[x^k](\frac{1-x^{V+2}}{1-x})^k=\sum_{i=0}^{k}\binom{2k-i-1}{k-1}[x^i](1-x^{V+2})^k\)
\(\displaystyle =\sum_{i=0}^{\frac{k}{V+2}} \binom{2k-i(V+2)-1)}{k-1} (-1)^i \binom{k}{i}\)
(第一个组合数是组合意义插板,第二个是二项展开)
求 \(k\) 的权值需要 \(O(\frac{k}{V})\) ,并不好直接卷积优化
由于涉及了类似 \([x^n]G^k(x)\) 的形式,考虑用 "另类拉格朗日反演" 求解
处理一下 \(x\) 的负指数,设 \(\displaystyle F(x)=\sum _{i=0}^{V+1}x^i\) ,转化为 \([x^0](\frac{F(x)}{x})^k\)
然而不管是 \(F(x)\) 还是 \(\frac{F(x)}{x}\) 都不存在复合逆,但是 \(\frac{x}{F(x)}\) 有
设 \(G(x)\) 为 \(\frac{x}{F(x)}\) 的复合逆
\(\displaystyle [x^0](\frac{F(x)}{x})^k=[x^0](\frac{x}{F(x)})^{-k}=[x^{k}]\frac{xG'(x)}{G(x)}\)
求解 \(G(x)\) 即可得到所有 \(k\) 的值
\(G(x)\) 为 \(\cfrac{x}{F(x)}=\cfrac{x (x-1)}{x^{V+2}-1}\) 的复合逆
即满足 \(\cfrac{G(G-1)}{G^{V+2}-1}=x\)
\(xG^{V+2}-G^2+G-x=0\)
这个形式还是比较易于进行牛顿迭代的
\(f(z)=xz^{V+2}-z^2+z-x\)
\(f'(z)=(V+2)xz^{V+1}-2z+1\)
\(\displaystyle A=B-\frac{f(B)}{f'(B)}=B-\frac{xB^{V+2}-B^2+B-x}{(V+2)xB^{V+1}-2B+1}\)
边界条件为 \([x^0]G(x)=0\) , \([x^1]G(x)=1\)
结果牛顿迭代需要多项式快速幂
有关多点求值的优化
由于我们并不需要知道每个点被操作的概率,只需要一个求和,因此可以对于每一项求出
设 \(a_i=\cfrac{p_i}{1-p_i},b_i=(1-p_i)^m\) ,容易发现实际上求出的式子是
\(A(\cfrac{p_i}{1-p_i})(1-p_i)^m=\sum A_j\sum_i a_i^j b_i\)
对于每个 \(j\) 求解,就是
\(\displaystyle [x^j]\sum _i \frac{b_i}{1-a_ix}\)
可以分治 \(\text{NTT}\) 通分,也就是写成下式
\(\displaystyle \frac{1}{\prod (1-a_ix)} \sum b_i \prod_{i!=j} (1-a_jx)\)
右边就是一个经典的分治 \(\text{NTT}\) 问题,再加上一次求逆即可
好像也不一定快吧
接下来就是套板板时间
1 | const int N=1<<19,P=998244353; |
\(\displaystyle F(x,z)=\frac{1}{\displaystyle 1-z\sum_{i=-1}^{V} x^i}\)
我们希望知道 \([x^0]F(x,z)\) ,然后根据 \([z^k]\) 就能得到 \(k\) 次操作权值和为 \(0\) 的方案数
考虑拉格朗日反演解二元函数
设 \(\displaystyle G(z)=z \sum_{i=-1}^V x^i\) ,转化为求 \(\displaystyle [z^1]\frac{z}{1-G(z)}\)
设 \(H(z)\) 为 \(G(z)\) 的复合逆,带入扩展拉格朗日反演
\(\displaystyle [z^1]\frac{z}{1-G(z)}=[z^0]\frac{1}{(1-z)^2}\frac{z}{H(z)}\)
\(H(z)\) 满足 \(=z\)