ARC093F Dark Horse
题意
有
分析
题目要求你
不钦定则有
计算答案时没被钦定的那些人在剩下的位置自由排序即可,有
最后,由于
int n,m,a[maxn];
int f[maxn][maxm];
int fac[maxm],inv[maxm];
int ksm(int x,int y){
int res=1;
for(;y;y>>=1,x=x*x%mod)if(y&1)res=res*x%mod;
return res;
}
int C(int x,int y){
if(x<y)return 0;
return fac[x]*inv[y]%mod*inv[x-y]%mod;
}
inline void adder(int &x,int y){x+=y,x=x>=mod?x-mod:x;}
inline void suber(int &x,int y){x-=y,x=x<0?x+mod:x;}
void init(int lim){
fac[0]=1;rep(i,1,lim)fac[i]=fac[i-1]*i%mod;
inv[lim]=ksm(fac[lim],mod-2);per(i,lim-1,0)inv[i]=inv[i+1]*(i+1)%mod;
}
inline void solve_the_problem(){
n=rd(),m=rd(),init(1<<n);
rep(i,1,m)a[i]=rd();
f[m+1][0]=1;
per(i,m,1)rep(S,0,(1<<n)-1)if(f[i+1][S]){
adder(f[i][S],f[i+1][S]);
rep(j,0,n-1)if(!((S>>j)&1)){
suber(f[i][S|(1<<j)],f[i+1][S]*C((1<<n)-a[i]-S,(1<<j)-1)%mod*fac[1<<j]%mod);
}
}
int ans=0;
// write(f[1][1],32),write(f[1][2]);
rep(S,0,(1<<n)-1)adder(ans,f[1][S]*fac[(1<<n)-1-S]%mod);
write((1ll<<n)*ans%mod);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现