题解:P13757 【MX-X17-T6】Selection
nullqtr_pwp · · 题解
考虑对于
瓶颈在于给定
int calc(int m,int k){
// 返回 \sum_{1<=i<=m} i^k
}
void init(int n,int v){
F(x,0,n)g[x][0]=(x==0)?(v-1):calc(v-1,x);
F(j,0,n-1)F(i,0,n-j-1)g[i][j+1]=sub(1ll*v*g[i][j]%mod,g[i+1][j]);
}
void solve(){
cin>>n>>m>>k>>v;
F(i,0,n)C[i][0]=1;
F(i,1,n)F(j,1,i)C[i][j]=add(C[i-1][j],C[i-1][j-1]);
init(n,v);
int sum=sub(0,g[n-k][k]);
init(n,v+1);
inc(sum,g[n-k][k]);
int ans=qpow(sum,m);
F(p,1,k)F(q,1,n-k){
int val=1ll*C[k][p]*C[n-k][q]%mod*qpow(g[n-k-q][k-p],m)%mod;
if((p+q)&1)inc(ans,val);
else dec(ans,val);
}
ans=1ll*ans*C[n][k]%mod;
cout<<ans<<'\n';
}