Problem. C

题意简述:

\(n\)个数\(a_1,\cdots,a_n\)\(a_i\sim B(m,p)\)且相互独立。
同时有一个\(N\)次多项式\(f(x)\),给定\(f(0),\cdots,f(N)\)
现在需要求出所有满足\(0\le b_i\le a_i\)\(f(\sum\limits_{i=1}^nb_i)\)的和对\(998244353\)取模的结果。

数据范围:

\(0\le N\le10000,0\le n,m,p<998244353\)

解法:

先把\(f(x)\)展开成Newton级数:
\(f(x)=\sum\limits_{k=0}^N{x\choose k}\Delta^kf(0)=\sum\limits_{k=0}^N\frac{x^{\underline k}}{k!}\sum\limits_{i=0}^k(-1)^{k-i}{k\choose i}f(i)=\sum\limits_{k=0}^N{x\choose k}k!\sum\limits_{i+j=k}\frac{f(i)}{i!}\frac{(-1)^j}{j!}=\sum\limits_{k=0}^N{x\choose k}k!f_k\)
显然\(f_k\)可以NTT算出。
然后我们再考虑\(B(m,p)\)的分布列的生成函数及其后缀和:
\(P(x)=\sum\limits_{i=0}^m{m\choose i}p^i(1-p)^{m-i}x^i,Q(x)=\sum\limits_{i=0}^mx^i\sum\limits_{j=i}^m{m\choose j}p^j(1-p)^{m-j}\)
这样最终的答案就是:
\(\sum\limits_{b}(\prod\limits_{i=1}^n[x^{b_i}]Q(x))f(\sum\limits_{i=1}^nb_i)=\sum\limits_{b}(\prod\limits_{i=1}^n[x^{b_i}]Q(x))\sum\limits_{k=0}^N{\sum\limits_{i=1}^nb_i\choose k}k!f_k\)
交换枚举的顺序,然后我们构建以\(b_i\)为下标的生成函数,这样要计算的就变成了:
\(\sum\limits_{k=0}^Nk!f_k\sum\limits_{i=k}^{nm}[x^i]Q(x)^m{i\choose k}\)
注意到\((x+1)^n=\sum\limits_{k=0}^n{n\choose k}x^k\),因此我们有:
\([x^k]Q(x+1)^m=\sum\limits_{i=k}^{n*m}[x^i]Q(x)^m{i\choose k}\)
那么答案就是:
\(\sum\limits_{k=0}^Nk!f_k[x^k]Q(x+1)^m\)
接下来我们要做的就是求出\(Q(x+1)^m\)
\(P(x)\)看上去要好求很多,因此我们先考虑把\(Q(x)\)转化为\(P(x)\)
根据定义我们可以得到:
\(Q(x)-P(x)=\frac{Q(x)-1}x\)
整理并代入\(x+1\)之后得到:
\(Q(x+1)=\frac{(x+1)P(x+1)-1}x\)
然后我们要做的就是求出\(P(x+1)\)
直接爆拆就行了:
\(P(x+1)=\sum\limits_{i=0}^m{m\choose i}p^i(1-p)^{m-i}(x+1)^i\)
\(=\sum\limits_{i=0}^m{m\choose i}p^i(1-p)^{m-i}\sum\limits_{j=0}^i{i\choose j}x^j\)
\(=\sum\limits_{i=0}^mx^i\sum\limits_{j=i}^m{m\choose j}{j\choose i}p^j(1-p)^{m-j}\)
\(=\sum\limits_{i=0}^mx^ip^i{m\choose i}\)

posted @ 2020-02-08 21:56  Shiina_Mashiro  阅读(144)  评论(0编辑  收藏  举报