Description


给定n
对于i从1~n,输出i个点组成竞赛图中,哈密顿回路的平均数量

Solution


竞赛图存在哈密顿回路的充要条件就是强连通
设f(n)f(n)f(n)表示n个点形成强连通竞赛图的方案数,一个简单的容斥就是f(n)=2(n2)−∑i=1n−1(ni)f(i)2(n−i2)f(n)=2^{\binom{n}{2}}-\sum_{i=1}^{n-1}{\binom{n}{i}f(i)2^{\binom{n-i}{2}}}f(n)=2(2n​)−∑i=1n−1​(in​)f(i)2(2n−i​)
考虑分子怎么求。我们先钦定一个环,然后剩余边随便连,可以发现这样实际上是在算所有哈密顿回路出现次数之和。
于是答案就是(n−1)!2((n2)−n)f(n)\frac{{\left(n-1\right)}!{2}^{\left({\binom{n}{2}-n}\right)}}{f(n)}f(n)(n−1)!2((2n​)−n)​
求f的话直接分治ntt就可以了

Code


#include <stdio.h>
#include <string.h>
#include <algorithm>
#define rep(i,st,ed) for (int i=st;i<=ed;++i)typedef long long LL;
const int MOD=998244353;
const int N=800005;LL f[N],g[N],A[N],B[N],fac[N],inv[N];
LL wn1[N],wn2[N];
int rv[N],n;void upd(LL &x,LL v) {x+=v,(x>=MOD)?(x-=MOD):0;
}LL ksm(LL x,LL dep) {LL res=1;for (;dep;dep>>=1,x=x*x%MOD) {(dep&1)?(res=res*x%MOD):0;}return res;
}void NTT(LL *a,int n,int f) {for (int i=0;i<n;++i) if (i<rv[i]) std:: swap(a[i],a[rv[i]]);for (int i=1;i<n;i<<=1) {LL wn=((f==1)?wn1[i]:wn2[i]);for (int j=0;j<n;j+=(i<<1)) {LL w=1;for (int k=0;k<i;++k,w=w*wn%MOD) {LL u=a[j+k],v=a[j+k+i]*w%MOD;a[j+k]=u+v,(a[j+k]>=MOD)?(a[j+k]-=MOD):0;a[j+k+i]=u-v,(a[j+k+i]<0)?(a[j+k+i]+=MOD):0;}}}if (f==-1) {LL ny=ksm(n,MOD-2);for (int i=0;i<n;++i) a[i]=a[i]*ny%MOD;}
}void solve(int l,int r) {if (l==r) {if (l) f[l]=(g[l]+MOD-f[l])*fac[l]%MOD;return ;}int mid=(l+r)>>1;solve(l,mid);int len=1,lg=0; for (;len<=(r-l+1)*2;) len<<=1,lg++;for (int i=0;i<len;++i) {rv[i]=(rv[i>>1]>>1)|((i&1)<<(lg-1));A[i]=0,B[i]=g[i];}rep(i,l,mid) A[i-l]=f[i]*inv[i]%MOD;NTT(A,len,1),NTT(B,len,1);for (int i=0;i<len;++i) A[i]=A[i]*B[i]%MOD;NTT(A,len,-1);rep(i,mid+1,r) upd(f[i],A[i-l]);solve(mid+1,r);
}int main(void) {fac[0]=fac[1]=inv[0]=inv[1]=1;for (int i=1;i<N;i<<=1) {wn1[i]=ksm(3,(MOD-1)/i/2);wn2[i]=ksm(3,MOD-1-(MOD-1)/i/2);}rep(i,2,1e5) {fac[i]=fac[i-1]*i%MOD;inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;}rep(i,2,1e5) inv[i]=inv[i-1]*inv[i]%MOD;scanf("%d",&n);rep(i,1,n) g[i]=ksm(2,(LL)i*(i-1)/2)*inv[i]%MOD;solve(0,n);puts("1\n-1");rep(i,3,n) {LL ans=fac[i-1]*ksm(2,(LL)i*(i-3)/2)%MOD;ans=ans*ksm(f[i],MOD-2)%MOD;printf("%lld\n", ans);}return 0;
}

洛谷P4233 射命丸文的笔记 分治NTT+竞赛图相关推荐

  1. 洛谷P4233 射命丸文的笔记 【多项式求逆】

    题目链接 洛谷P4233 题解 我们只需求出总的哈密顿回路个数和总的强联通竞赛图个数 对于每条哈密顿回路,我们统计其贡献 一条哈密顿回路就是一个圆排列,有\(\frac{n!}{n}\)种,剩余边随便 ...

  2. 洛谷 P4233 射命丸文的笔记 ntt

    题目背景 (七)再见,地底世界的朋友们 在地灵殿住了许多天了呢. 这些日子里,觉分享了很多旧地狱的故事. 此次地底旅行,可以说是非常充实了. 虽然仍旧有些不舍,不过人类总是要见太阳的,再说这样麻烦觉姐 ...

  3. 洛谷 P4233 射命丸文的笔记 题解

    题目传送门 题目大意: 求 nnn 个点的强连通竞赛图中的哈密顿回路的期望个数. 题解 答案需要求期望个数,那么只需要求出总的哈密顿回路个数除以强联通竞赛图个数即可. 设 s[i]s[i]s[i] 表 ...

  4. [洛谷P4233]射命丸文的笔记

    [题目大意] 如果一个竞赛图含有哈密顿回路,则称这张竞赛图为值得记录的 从所有含有nnn个顶点(顶点互不相同)的,值得记录的竞赛图中等概率随机选取一个 求选取的竞赛图中哈密顿回路数量的期望 输出答案除 ...

  5. P4233 射命丸文的笔记

    P4233 射命丸文的笔记 官方题解 题意 如果一个竞赛图含有哈密顿回路,则称这张竞赛图为值得记录的 从所有含有n个顶点(顶点互不相同)的,值得记录的竞赛图中等概率随机选取一个 求选取的竞赛图中哈密顿 ...

  6. python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)

    题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a,b,求$ a \times b$. 输入格式 第一行一个正整数,表示 a: ...

  7. 【洛谷P4233】— 射命丸文的笔记(竞赛图+多项式求逆)

    传送门 考虑强连通竞赛图哈密顿回路总数很好求 为(n−1)!2(n2)−n(n-1)!2^{{n\choose 2}-n}(n−1)!2(2n​)−n 现在问题是求强连通竞赛图数 设fif_ifi​为 ...

  8. 洛谷 - P4721 【模板】分治 FFT(分治NTT)

    题目链接:点击查看 题目大意:给出序列 g1,⋯,ng_{1,\cdots,n}g1,⋯,n​,求 f0,⋯,nf_{0,\cdots,n}f0,⋯,n​ 规定 fi=∑j=1ifi−jgjf_i=\ ...

  9. [洛谷P4721]【模板】分治 FFT

    题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$ f_i=\sum_{j=1}^if_{i-j}g_j\\ f_0=1 $$ 题解:直接求复杂度是$O ...

最新文章

  1. 近期活动盘点:智慧园区大数据精准招商思享会、数据法学研讨会、海外学者短期讲学(12.21-12.24)
  2. 2017-2018-2 20179207 《网络攻防技术》第五周作业
  3. appcan+html查看效果,appcan常用的窗口方法
  4. dubbo+zookeeper与提供者、消费者之间端口通信问题(No provider available for the service)
  5. 图解git原理与日常实用指南
  6. sersync+rsync+inotify-tools集中日志,实时同步
  7. 机器学习中树模型算法总结之 决策树(下)
  8. if....else的基本用法
  9. AI圣经《深度学习》作者斩获2018年图灵奖,100 万奖励!
  10. OceanBase数据库七亿tpmC的关键技术
  11. 云服务器ECS是什么
  12. [中文语音识别后文本加标点] 维基百科数据下载和解析(xml-txt)
  13. Microsoft SQL Server 生成随机数字、字符串、日期、验证码以及 UUID
  14. HDU 1847 ——Good Luck in CET-4 Everybody!
  15. 学习stm32中断、DMA通信原理和编程方法
  16. eclipse、android studio快速输入System.out.println();
  17. 联发科(MTK)MT6765 核心板 安卓主板
  18. 解决树莓派鼠标延迟/迟滞问题-转CSDN博主“Deiki”-sunziren
  19. Sql Server服务远程过程调用失败。[0x800706be]
  20. 乐学偶得python视频_乐学偶得 - 课程

热门文章

  1. win10,win11后在cmd命令行输入python自动调用微软应用商店
  2. 迅雷高速下载免安装 Kali Linux
  3. 4相5线步进电机驱动原理
  4. 知名插画师走尺,带你走进“薪”世界
  5. 比较电路中的正相反馈电阻作用
  6. 不同的声音-我为什么反对用Node
  7. OSChina 周三乱弹 ——纪念Bob Taylor
  8. 勘误发布:《数字滤波器的MATLAB与FPGA实现——Xilinx/VHDL版》P320
  9. Centos7.4在vmware6.5下基于nfs和dd实现虚机的备份恢复
  10. 关于nacos配置中心配置不成功的问题