CF932E-Team Work【斯特林数,组合数学】
正題
題目鏈接:https://www.luogu.com.cn/problem/CF932E
題目大意
給出n,kn,kn,k,求∑i=1nC(n,i)?ik\sum_{i=1}^nC(n,i)*i^ki=1∑n?C(n,i)?ik
解題思路
上式子的話,大體是先拆開iki^kik變成∑i=1n(ni)∑j=0k{kj}(ij)j!\sum_{i=1}^n\binom{n}{i}\sum_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\binom{i}{j}j!i=1∑n?(in?)j=0∑k?{kj?}(ji?)j!
?∑i=1n∑j=0k{kj}(ij)(ni)j!\Rightarrow \sum_{i=1}^n\sum_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\binom{i}{j}\binom{n}{i}j!?i=1∑n?j=0∑k?{kj?}(ji?)(in?)j!
拆開CCC然后化解一下
?∑i=1n∑j=0k{kj}?1(i?j)!?n!(n?i)!\Rightarrow \sum_{i=1}^n\sum_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}*\frac{1}{(i-j)!}*\frac{n!}{(n-i)!}?i=1∑n?j=0∑k?{kj?}?(i?j)!1??(n?i)!n!?
?∑j=0k{kj}n!(n?j)!∑i=0n(n?jn?i)\Rightarrow \sum_{j=0}^k \begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}\sum_{i=0}^{n}\binom{n-j}{n-i}?j=0∑k?{kj?}(n?j)!n!?i=0∑n?(n?in?j?)
∑j=1k{kj}P(n,j)?2n?j\sum_{j=1}^k\begin{Bmatrix}k\\j\end{Bmatrix}P(n,j)*2^{n-j}j=1∑k?{kj?}P(n,j)?2n?j
理解一下的話就是最開的式子的意義是:在nnn種顏色中選擇若干種然后再去涂kkk個(gè)物品,求方案種數(shù)。轉(zhuǎn)換一下的話我們可以把kkk個(gè)物品分成若干個(gè)集合,每個(gè)物品集合顏色相同,然后再nnn個(gè)顏色中排列出這些顏色,剩下的都是可選可不選的。
然后遞推處理第二類斯特林?jǐn)?shù)就好了,時(shí)間復(fù)雜度O(k2)O(k^2)O(k2)
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=5100,XJQ=1e9+7; ll n,k,S[N][N],ans; ll power(ll x,ll b){ll ans=1;if(b<0)return power(power(x,-b),XJQ-2);while(b){if(b&1)ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans; } ll P(ll n,ll m){ll tmp=1;if(n<m)return 0;for(ll i=n-m+1;i<=n;i++)tmp=tmp*i%XJQ;return tmp; } int main() {scanf("%lld%lld",&n,&k);S[0][0]=1;for(ll i=1;i<=k;i++)for(ll j=1;j<=i;j++)S[i][j]=(S[i-1][j-1]+j*S[i-1][j]%XJQ)%XJQ;for(ll i=0;i<=k;i++)(ans+=S[k][i]*P(n,i)%XJQ*power(2,n-i)%XJQ)%=XJQ;if(!k)ans--;printf("%lld",ans);return 0; }總結(jié)
以上是生活随笔為你收集整理的CF932E-Team Work【斯特林数,组合数学】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3768-简单的数学题【莫比乌斯反演,
- 下一篇: P6257-[ICPC2019 WF]F