P6108 题解
区间加;区间选出非空子序列,求所有选择方案中子序列的方差之和,模 \(998244353\)。
\(1\le n\le5\times10^6\),\(1\le m\le10^5\)。
根本不是 DS,为了不污染记录就单独发出来了。
首先考虑
\[V(a)=\dfrac 1n\left(\sum a_i^2\right)-\dfrac1{n^2}\left(\sum a_i\right)^2
\]
这个依据方差定义展开即证。
对于本题,显然考虑枚举长度 \(k\in[1,r-l+1]\),只需要求出:
\(\color{grey}\textbf{(1)}\) 区间选出 \(k\) 个数的子序列的 \((\sum a_i^2)\) 之和除以 \(k\) 后再求和。
直接把贡献拆在每一位考虑即可,
\[\begin{aligned}F(k)
&= \dfrac 1k\sum\limits_{|S|=k}\sum_{i\in S} a_i^2 \\
&=\dfrac 1k\sum\limits_{i=l}^r\binom{r-l}{k-1}a_i^2 \\
\end{aligned}\]
求和即有
\[\begin{aligned}\sum\limits_{k=1}^{r-l+1}F(k)
&= \sum\limits_{k=1}^{r-l+1}\dfrac1k\sum\limits_{i=l}^r\binom{r-l}{k-1}a_i^2 \\
&= \left(\sum\limits_{k=1}^{r-l+1}\dfrac{\small\binom{r-l}{k-1}}k\normalsize\displaystyle\right)\times\left(\sum\limits_{i=l}^r a_i^2\right) \\
&\triangleq f(r-l+1)\times\left(\sum\limits_{i=l}^r a_i^2\right)
\end{aligned}\]
其中
\[f(n)= \sum\limits_{k=1}^n\dfrac{\binom{n-1}{k-1}}k = \sum\limits_{k=1}^n\dfrac{\binom nk}n= \dfrac{2^n-1}n
\]
第一步运用了常用组合数恒等式 - 转换系数,具体来说展开即证。第二步运用了二项式定理。
解决 \(f\) 后,只需要区间加的同时快速维护 \(\sum\limits_{i=l}^r a_i^2\),线段树即可。
\(\color{grey}\textbf{(2)}\) 区间选出 \(k\) 个数的子序列的 \((\sum a_i)^2\) 之和除以 \(k^2\) 后再求和。
这里我没有想到。。考虑一种拆分 trick:
\[(\sum a_i)^2=(\sum a_i^2)+\sum\limits_{i\ne j}a_ia_j
\]
这样使得我们能够拆分贡献。然后可以类似 \(\color{grey}\textbf{(1)}\) 做:
\[\begin{aligned}G(k)
&= \dfrac 1{k^2}\sum\limits_{|S|=k}\left(\sum\limits_{i\in S} a_i\right)^2 \\
&= \dfrac 1{k^2}\sum\limits_{|S|=k}\left(\sum\limits_{i\in S} a_i^2+\sum\limits_{i,j\in S,i\ne j} a_ia_j\right) \\
&= \dfrac 1{k^2}\sum\limits_{i=l}^r\binom{r-l}{k-1}a_i^2+\sum\limits_{j\ne i}\binom{r-l-1}{k-2}a_ia_j \\
&= \dfrac 1{k^2}\sum\limits_{i=l}^r\binom{r-l}{k-1}a_i^2+\binom{r-l-1}{k-2}\cdot\left((\sum\limits_{j=l}^r a_j)-a_i\right) \\
&= \dfrac 1{k^2}\sum\limits_{i=l}^r\binom{r-l-1}{k-1}a_i^2+\binom{r-l-1}{k-2}\cdot\left(\sum\limits_{i=l}^r a_i\right) \\
\end{aligned}\]
第四行到第五行是将后面的 \(-a_i\) 项拆了出来。
求和即有
\[\begin{aligned}\sum\limits_{k=1}^{r-l+1}G(k)
&= \sum\limits_{k=1}^{r-l+1}\dfrac 1{k^2}\sum\limits_{i=l}^r\binom{r-l-1}{k-1}a_i^2+\binom{r-l-1}{k-2}\cdot\left(\sum\limits_{i=l}^r a_i\right)^2 \\
&= \left(\sum\limits_{k=1}^{r-l+1}\dfrac{\binom{r-l-1}{k-1}}{k^2}\right)\times\left(\sum\limits_{i=l}^r a_i^2\right) + \left(\sum\limits_{k=1}^{r-l+1}\dfrac{\binom{r-l-1}{k-2}}{k^2}\right)\times\left(\sum\limits_{i=l}^r a_i\right)^2 \\
&\triangleq g(r-l+1)\times\left(\sum\limits_{i=l}^r a_i^2\right) + g^{\prime}(r-l+1)\times\left(\sum\limits_{i=l}^r a_i\right)^2 \\
\end{aligned}\]
其中分为两项处理,首先是
\[g(n)=\sum_{k=1}^{n-1}\dfrac{\binom{n-2}{k-1}}{k^2}=\dfrac1{n-1}\sum_{k=1}^{n-1}\dfrac{\binom{n-1}k}k\triangleq\dfrac1{n-1}A_{n-1}
\]
这里 \(A_n=\sum\limits\binom ni/i\),我们考察
\[\begin{aligned}A(n)-A(n-1)
&= \sum\limits_{i=1}^n\dfrac{\binom ni}i-\sum\limits_{i=1}^{n-1}\dfrac{\binom{n-1}i}i \\
&= \dfrac1n+\sum\limits_{i=1}^{n-1}\dfrac{\binom ni-\binom{n-1}i}i \\
&= \dfrac1n+\sum\limits_{i=1}^{n-1}\dfrac{\binom{n-1}{i-1}}i \\
&= \dfrac1n+\sum\limits_{i=1}^{n-1}\dfrac{\binom ni}n \\
&= \dfrac{2^n-1}n
\end{aligned}\]
于是可以预处理出。
另一方面,
\[g^{\prime}(n)=\sum_{k=1}^n\dfrac{\binom{n-2}{k-2}}{k^2}=\sum_{k=1}^n\dfrac{\binom{n-1}{k-1}-\binom{n-2}{k-1}}{k^2}=g(n+1)-g(n)
\]
解决 \(g,g^{\prime}\) 后,只需要区间加的同时快速维护 \(\sum\limits_{i=l}^r a_i\)、\(\sum\limits_{i=l}^r a_i^2\),依旧是线段树搞定。
\(O(m\log n)\)