[题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂

2022-11-21,,,,

题目

题目里要求的是:

\[\sum_{k=0}^n f(k) \times X^k \times \binom nk
\]

这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项式转成下降幂多项式。这一步可以做到\(O(mlogm)\),(模板)但是这题不需要,这个后面再说。假设现在已经得出了f的下降幂多项式的系数\(b_i\),则:

\[\begin{align}
f(k)&=\sum_{i=0}^m b_ik^{\underline i}\\
ans&=\sum_{k=0}^n f(k) \times X^k \times \binom nk\\
&=\sum_{k=0}^n \sum_{i=0}^m b_i k^{\underline i} X^k\frac{n!}{(n-k)!k!}\\
&=\sum_{i=0}^m b_i \sum_{k=i}^n \frac{k!}{(k-i)!}\cdot \frac{n!}{(n-k)!k!}(交换求和符号,k从i开始因为k<i时下降幂的值为0)\\
&=\sum_{i=0}^m b_i \sum_{k=i}^n \frac{(n-i)!}{(k-i)!(n-k)!}\cdot X^{k-i}\cdot 1^{n-k}X^i\cdot n^{\underline i}\\
&=\sum_{i=0}^m b_i \sum_{k=i}^n \binom{n-i}{k-i}\cdot X^{k-i}\cdot 1^{n-k}X^i\cdot n^{\underline i}\\
&=\sum_{i=0}^m b_i (1+x)^{n-i}X_i\cdot n^{\underline i}(二项式定理,这种题的套路)\\
\end{align}
\]

\(k^{\underline i}\)表示k的i次下降幂。所以只要求出\(b_i\)就能\(O(m)\)完成计算。


众所周知 \(x^n=\sum_{i=0}^n S2(n,i) x^{\underline i}\)

所以

\[\begin{align}
\sum_{i=0}^m a_i x^i&=\sum_{i=0}^m a_i \sum_{j=0}^i S2(i,j) x^{\underline j}\\
&=\sum_{i=0}^m x^{\underline i} \sum_{j=i}^m a_j S2(j,i)(交换求和符号)\\

\end{align}
\]

所以\(b_i=\sum_{j=i}^m a_j S2(j,i)\)。

第二类斯特林数可以暴力\(O(m^2)\)递推:\(S2(n,m)=S2(n-1,m-1)+m \cdot S2(n-1,m)\)。

总时间复杂度\(O(m^2)\)。

点击查看代码
#include <bits/stdc++.h>

#define rep(i,n) for(int i=0;i<n;++i)
#define repn(i,n) for(int i=1;i<=n;++i)
#define LL long long
#define pii pair <LL,LL>
#define fi first
#define se second
#define mpr make_pair
#define pb push_back using namespace std; LL n,x,MOD,m,a[1010],b[1010],s2[1010][1010],ans=0; LL qpow(LL xx,LL a)
{
LL res=xx,ret=1;
while(a>0)
{
if((a&1)==1) ret=ret*res%MOD;
a>>=1;
res=res*res%MOD;
}
return ret;
} int main()
{
cin>>n>>x>>MOD>>m;
rep(i,m+1) scanf("%lld",&a[i]);
s2[0][0]=s2[1][1]=1;
for(int i=2;i<=m+3;++i) repn(j,i) s2[i][j]=(s2[i-1][j-1]+s2[i-1][j]*(LL)j)%MOD;
rep(i,m+1) for(int j=i;j<=m;++j) (b[i]+=a[j]*s2[j][i])%=MOD;
LL mul=1;
rep(i,m+1)
{
(ans+=b[i]*qpow(1+x,n-i)%MOD*qpow(x,i)%MOD*mul)%=MOD;
(mul*=(n-i))%=MOD;
}
cout<<ans<<endl;
return 0;
}

[题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂的相关教程结束。

《[题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂.doc》

下载本文的Word格式文档,以方便收藏与打印。