Problem. C

题意简述:

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

数据范围:

(0le Nle10000,0le n,m,p<998244353)

解法:

先把(f(x))展开成Newton级数:
(f(x)=sumlimits_{k=0}^N{xchoose k}Delta^kf(0)=sumlimits_{k=0}^Nfrac{x^{underline k}}{k!}sumlimits_{i=0}^k(-1)^{k-i}{kchoose i}f(i)=sumlimits_{k=0}^N{xchoose k}k!sumlimits_{i+j=k}frac{f(i)}{i!}frac{(-1)^j}{j!}=sumlimits_{k=0}^N{xchoose k}k!f_k)
显然(f_k)可以NTT算出。
然后我们再考虑(B(m,p))的分布列的生成函数及其后缀和:
(P(x)=sumlimits_{i=0}^m{mchoose i}p^i(1-p)^{m-i}x^i,Q(x)=sumlimits_{i=0}^mx^isumlimits_{j=i}^m{mchoose j}p^j(1-p)^{m-j})
这样最终的答案就是:
(sumlimits_{b}(prodlimits_{i=1}^n[x^{b_i}]Q(x))f(sumlimits_{i=1}^nb_i)=sumlimits_{b}(prodlimits_{i=1}^n[x^{b_i}]Q(x))sumlimits_{k=0}^N{sumlimits_{i=1}^nb_ichoose k}k!f_k)
交换枚举的顺序,然后我们构建以(b_i)为下标的生成函数,这样要计算的就变成了:
(sumlimits_{k=0}^Nk!f_ksumlimits_{i=k}^{nm}[x^i]Q(x)^m{ichoose k})
注意到((x+1)^n=sumlimits_{k=0}^n{nchoose k}x^k),因此我们有:
([x^k]Q(x+1)^m=sumlimits_{i=k}^{n*m}[x^i]Q(x)^m{ichoose k})
那么答案就是:
(sumlimits_{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)=sumlimits_{i=0}^m{mchoose i}p^i(1-p)^{m-i}(x+1)^i)
(=sumlimits_{i=0}^m{mchoose i}p^i(1-p)^{m-i}sumlimits_{j=0}^i{ichoose j}x^j)
(=sumlimits_{i=0}^mx^isumlimits_{j=i}^m{mchoose j}{jchoose i}p^j(1-p)^{m-j})
(=sumlimits_{i=0}^mx^ip^i{mchoose i})

原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12285344.html