博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P4233 射命丸文的笔记
阅读量:6801 次
发布时间:2019-06-26

本文共 2110 字,大约阅读时间需要 7 分钟。

思路

题目要求求的是哈密顿回路的期望数量,实际上就是哈密顿回路的总数/有哈密顿回路的竞赛图的数量

n个点的所有竞赛图中哈密顿回路的总数为

\[ (n-1)! 2^{\frac{n(n-1)}{2}-n} \]

每个哈密顿回路可以看成一个环,则经过的n个节点就是长度为n的一个排列,排列总数为\(n!\) 个,每个回路被计数了n次,有\((n-1)!\)种,剩下的\(\frac{n(n-1)}{2}-n\)条边随便连,有\(2^{\frac{(n-1)n}{2}-n}\)

而强连通竞赛图中必有一个哈密顿回路

而i个点的竞赛图总数为

\[ 2^{\frac{n(n-1)}{2}} \]
设i个点的竞赛图总数为\(g_i=2^{\frac{i(i-1)}{2}}\),i个点强连通竞赛图总数为\(f_i\)

可以枚举拓扑序最小的强连通分量大小,然后用总数减去不强连通的竞赛图总数即可

为什么枚举拓扑序最小?因为枚举拓扑序最小同时确定了每条边的方向并保证了整个图不会强连通

\[ f_{i}=g_i-\sum_{j=1}^{i-1} f_j \binom{i}{j} g_{i-j} \]

所以

\[ g_i=f_i+\sum_{j=1}^{i-1} f_j \binom{i}{j} g_{i-j}=\sum_{j=1}^{i} f_j \binom{i}{j} g_{i-j} \]
拆开组合数
\[ \begin{align}g_i=&\sum_{j=1}^{i} f_j \binom{i}{j} g_{i-j}\\=& i!\sum_{j=1}^i \frac{f_{j}}{j!}\frac{g_{i-j}}{(i-j)!}\end{align} \]
所以
\[ \frac{g_i}{i!}=\sum_{j=1}^i \frac{f_{j}}{j!}\frac{g_{i-j}}{(i-j)!} \]
\(F_i=\frac{f_i}{i!}\)\(G_i=\frac{g_i}{i!}\)

就变成了这样

\[ G_i=\sum_{j=1}^i G_{i-j}F_j \]
然后上分治FFT或者多项式求逆就好了

代码

#include 
#include
#include
#define int long longusing namespace std;const int MAXN = 300000;const int MOD = 998244353;const int G = 3;const int invG = 332748118;int rev[MAXN];void cal_rev(int n,int lim){ for(int i=0;i
>1]>>1)|((i&1)<<(lim-1));}int pow(int a,int b){ int ans=1; while(b){ if(b&1) ans=(1LL*ans*a)%MOD; a=(1LL*a*a)%MOD; b>>=1; } return ans;}void NTT(int *a,int opt,int n,int lim){ for(int i=0;i
>1,midlen,midlim); static int tmp[MAXN]; while((dep<<1)>midlen) midlen<<=1,midlim++; for(int i=0;i
=0;i--) jc_inv[i]=(1LL*jc_inv[i+1]*(i+1))%MOD;}int f[MAXN],g[MAXN];signed main(){ scanf("%lld",&n); init(n); int inv2=pow(2,MOD-2); for(int i=1;i<=n;i++) g[i]=(1LL*pow(2,(1LL*i*(i-1)/2)%(MOD-1))*jc_inv[i]%MOD); g[0]=1; int midlen=1,midlim=0; Inv(g,f,n+1,midlen,midlim); for(int i=1;i<=n;i++){ if(i==1) printf("1\n"); else if(i==2) printf("-1\n"); else printf("%lld\n",MOD-1LL*jc[i-1]*pow(2,i*(i-3)/2%(MOD-1))%MOD*pow(1LL*f[i]*jc[i]%MOD,MOD-2)%MOD); } return 0;}

转载于:https://www.cnblogs.com/dreagonm/p/10756269.html

你可能感兴趣的文章
CIF、DCIF、D1分辨率是多少?
查看>>
js 中解决 下载路径有中文的问题
查看>>
Sublime Text 全程指引 by Lucida
查看>>
php 面向对象基础总结
查看>>
负载均衡集群解决方案 (二)Nginx
查看>>
linux下tc控制流量控制档
查看>>
Oracle基础学习总结之数据库与实例
查看>>
sftp配置多用户权限
查看>>
System Volume Information 文件夹文件删除
查看>>
我的友情链接
查看>>
Linux初认识
查看>>
netbeans build in one jar
查看>>
CentOS 6.6 新安装系统的网络IP配置
查看>>
zabbix邮件报警设置
查看>>
win10远程桌面连接错误
查看>>
RH134 UNIT5
查看>>
解析linux根文件系统的目录树
查看>>
onTouchEvent事件中调用onFling方法
查看>>
我的友情链接
查看>>
linux shell
查看>>