QOJ #8715. 放苹果
唉,我觉得这个题好牛啊,为啥 zak 能 8min 切掉捏?
考虑 \(i\to i+1\) 被多少个苹果经过,枚举 \(j\) 表示 \([1,i]\) 中苹果的个数,则对总共的贡献是 \(\min(j,n-j){n\choose j}i^j(m-i)^{n-j}\)。
将 \((m-i)^{n-j}\) 展开可以得到:
\[\sum\limits_{i=0}^{m} \sum\limits_{j=0}^{n}\min(j,n-j){n\choose j}i^j\sum\limits_{k=0}^{n-j} m^k(-i)^{n-j}{n-j\choose k}
\]
交换求和号,有
\[\sum\limits_{k=0}^{n}\sum\limits_{i=0}^{m} i^{n-k}\sum\limits_{j=0}^{n-k}\min(j,n-j){n\choose j}m^k(-1)^{n-j-k}{n-j\choose k}
\]
显然可以用一次卷积求出后面 \(j\) 一维的东西,记作 \(g_k\)。将 \(g_k\) 翻转,我们要求的就是
\[\sum\limits_{k=0}^{n}g_k\sum\limits_{i=0}^{m} i^{k}
\]
我们自然希望能把所有 \(S(m,k)=\sum\limits_{i=0}^{m} i^k\) 求出来。
展开 \(S(m+1,k)-S(m,k)\),可以得到:
\[S(m+1,k)-S(m,k)=(m+1)^k=\sum\limits_{i=0}^{k}m^i{k\choose i}
\]
对所有 \(m\) 求和,可以得到
\[S(m+1,k)-1=\sum\limits_{i=0}^{k}{k\choose i}S(m,i)
\]
将右边的 \(S(m,k)\) 移过去,可以得到:
\[(m+1)^k-1=\sum\limits_{i=0}^{k-1}S(m,i){k\choose i}
\]
将所有 \(k\) 对应的式子写出来,是一个多项式乘法逆的形式,可以 \(O(n\log n)\) 解决。