Atcoder 题面传送门 & 洛谷题面传送门

简单题,由于这场 arc 的 F 是 jxd 作业而我不会做,所以只好来把这场的 E 水掉了。

我们记 \(f(i)\) 为钦定 \(i\) 个元素出现次数不超过一次,剩余放任自流(cmd_blk 内味)的方案数,再记 \(g(i)\) 为恰好 \(i\) 个元素出现次数不超过一次的方案数,那么有 \(f(i)=\sum\limits_{j=i}^ng(j)\dbinom{j}{i}\),二项式反演一下可得 \(g(i)=\sum\limits_{j=i}^nf(j)\dbinom{j}{i}(-1)^{j-i}\),我们要求的答案即为 \(g(0)=\sum\limits_{i=0}^n(-1)^if(i)\)。

考虑怎样求 \(f(i)\),首先我们需钦定 \(i\) 个元素出现不超过一次,方案数为 \(\dbinom{n}{i}\),我们枚举这 \(i\) 个元素划分入多少个集合,设为 \(j\),根据组合意义,可能会有一些元素出现了一次,那我们就新建一个集合 \(S_0\) 表示出现 \(0\) 次的数的集合,并新建一个 \(0\) 号元素,强制令 \(0\in S_0\),这样等价于将 \(i+1\) 个元素放入 \(j+1\) 个非空集合,其中与 \(0\) 号元素被划分在一个集合的元素就是出现零次的元素,这样可得方案数为 \(\begin{Bmatrix}i+1\\j+1\end{Bmatrix}\)。

接下来考虑剩下 \(n-i\) 个元素,它们可以形成 \(2^{n-i}\) 个集合,由于剩下的元素放任自流,这 \(2^{n-i}\) 个集合每个又有选或者不选两种方案,方案数为 \(2^{2^{n-i}}\),另外剩余 \(n-i\) 个元素每个又可以放入原来 \(j\) 个非空集合中,每个元素是否放入每个集合都有 \(2\) 种选择,因此每个元素可选择的方案数为 \(2^j\),总贡献为 \(2^{j\times(n-i)}\)。

因此 \(f(i)=\sum\limits_{j=0}^i\dbinom{n}{i}\begin{Bmatrix}i+1\\j+1\end{Bmatrix}·2^{2^{n-i}}·2^{j\times(n-i)}\),简单算一下就好了,\(n^2\log n\) 的做法显然,不过似乎过不去?稍微有点脑子的人也能优化到 \(n^2\) 罢……

const int MAXN=3e3;
int n,mod,s[MAXN+5][MAXN+5],c[MAXN+5][MAXN+5];
void init(int n){
s[0][0]=c[0][0]=1;
for(int i=1;i<=n;i++){
c[i][0]=1;
for(int j=1;j<=i;j++){
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
s[i][j]=(s[i-1][j-1]+1ll*s[i-1][j]*j)%mod;
}
}
}
int qpow(int x,int e,int mod){
int ret=1;
for(;e;e>>=1,x=1ll*x*x%mod) if(e&1) ret=1ll*ret*x%mod;
return ret;
}
int main(){
scanf("%d%d",&n,&mod);init(n+1);int ans=0;
for(int i=0;i<=n;i++){
int sum=0,pww=qpow(2,qpow(2,n-i,mod-1),mod),bs=qpow(2,n-i,mod),pw=1;
for(int j=0;j<=i;j++,pw=1ll*pw*bs%mod){
sum=(sum+1ll*s[i+1][j+1]*c[n][i]%mod*pww%mod*pw%mod)%mod;
}
if(i&1) ans=(ans-sum+mod)%mod;
else ans=(ans+sum)%mod;
} printf("%d\n",ans);
return 0;
}

最新文章

  1. jquery-创建弹出框原理
  2. cocos2dx &amp;&amp; Lua 环境配置
  3. SQL查询符合条件的记录的总数
  4. Element is not currently visible and so may not be interacted with错误
  5. Revit二次开发示例:EventsMonitor
  6. SSH连接 NAT型 VirtualBox + LINUX
  7. leetcode72. Edit Distance
  8. javascript事件及事件传输
  9. Jquery中日期插件jquery.datepick的使用
  10. wordpress 修改过程
  11. Light OJ 1136
  12. 浅析 .Net Core中Json配置的自动更新
  13. P5304 [GXOI/GZOI2019]旅行者
  14. vue将指定区域的表格数据或element-ui中el-table的数据单笔或多笔批量导出excel
  15. Oracle普通视图和物化视图的区别
  16. Python3基础 str count 获得子字符串出现的次数
  17. 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)
  18. Endv 博客简介
  19. TreeView 高速单击时不运行AfterCheck时间
  20. Vue项目SEO优化的另一种姿态

热门文章

  1. 微软Windows11安卓子系统已支持运行APK 应用(附手把手详细安装攻略)怎么安装安卓/如何安装安卓应用/支持多窗口多任务
  2. Hadoop面试题(四)——YARN
  3. 周末愉快--css画大熊猫
  4. Spring Cloud Gateway GatewayFilter的使用
  5. Java并发:重入锁 ReentrantLock(一)
  6. 15个问题自查你真的了解java编译优化吗?
  7. objcopy使用
  8. STL 去重 unique
  9. Ubuntu16.04安装apache hive
  10. kubernetes常见命令