题解 CF932E 【Team Work】
将原题看作:有
发现
这样一个
#include<bits/stdc++.h>
using namespace std;
#define RI register int
const int mod=1000000007;
int n,K,ans;
int S[5005][5005];
int ksm(int x,int y) {
int re=1;
for(;y;y>>=1,x=1LL*x*x%mod) if(y&1) re=1LL*re*x%mod;
return re;
}
void prework() {
S[0][0]=1;
for(RI i=1;i<=K;++i)
for(RI j=1;j<=i;++j)
S[i][j]=(S[i-1][j-1]+1LL*j*S[i-1][j]%mod)%mod;
}
int main()
{
scanf("%d%d",&n,&K),prework();
for(RI i=1;i<=n&&i<=K;++i) {
int kl=1LL*S[K][i]*ksm(2,n-i)%mod;
for(RI j=n-i+1;j<=n;++j) kl=1LL*kl*j%mod;
ans=(ans+kl)%mod;
}
printf("%d\n",ans);
return 0;
}