P5434 有标号荒漠计数

news/2025/10/30 8:13:51/文章来源:https://www.cnblogs.com/SmpaelFx/p/19164236

P5434 有标号荒漠计数

数学、组合计数、生成函数


其实森林也是沙漠

挺难的一道题,并非独立切。

\(f_n\)\(n\) 个点仙人掌数量,\(F(x)\)\(\{f_n\}\) 的 EGF,答案即为 \([\frac{x^n}{n!}]\exp(F(x))\)

图论计数,一般考虑设函数方程或者将一个组合对象拆分为多个小组合对象,这里考虑设函数方程。

发现 \(F(x)\) 其实不能转移,考虑设

\[G(x)=\sum\limits_{i=0}^{+\infty}\frac{f_i}{(i-1)!} \]

其组合意义为有根仙人掌的生成函数。

对一个仙人掌,考虑任取一个点 \(u\) 作为根。与 \(u\) 相连的桥,其贡献为 \(G(x)\);与 \(u\) 相连的环,其贡献为 \(\frac{1}{2}\sum\limits_{i=2}^{+\infty}G^i(x)=\frac{G^2(x)}{2(1-G(x))}\) 这里除以 \(2\)、不除阶乘是因为与 \(u\) 相连的环是可翻转的排列。
将桥和环任意组合(无序无数量限制,即 \(\exp\))可以得到关于 \(G(x)\) 的函数方程。

\[G(x)=x\exp\left(G(x)+\frac{G^2(x)}{2\left(1-G(x)\right)}\right) \]

牛顿迭代即可,时间复杂度 \(\Theta(n\log n)\)


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<int,ll> pil;
typedef pair<ll,int> pli;
typedef pair<ll,ll> pll;
const int MOD=998244353,G=3,INV2=(MOD+1)>>1;
void add(int &x,int y){x+=y;if(x>=MOD) x-=MOD;
}
int qpow(int a,int b){int mul=1;while(b){if(b&1) mul=(ll)mul*a%MOD;a=(ll)a*a%MOD;b>>=1;}return mul;
}
const int N=800005;
int fact[N],invfact[N],inv[N],stp[N],invstp[N];
void init(){fact[0]=1;for(int i=1;i<N;i++) fact[i]=(ll)i*fact[i-1]%MOD;invfact[N-1]=qpow(fact[N-1],MOD-2);for(int i=N-1;i>0;i--) invfact[i-1]=(ll)i*invfact[i]%MOD;for(int i=1;i<N;i++) inv[i]=(ll)invfact[i]*fact[i-1]%MOD;for(int w=1;w<N;w<<=1) stp[w]=qpow(G,(MOD-1)/w),invstp[w]=qpow(stp[w],MOD-2);
}
namespace Poly{void ntt(vector<int> &f,bool flag=false){int n=f.size();vector<int> rev(n);for(int i=1;i<n;i++){rev[i]=rev[i>>1]>>1;if(i&1) rev[i]|=(n>>1);}for(int i=1;i<n;i++) if(rev[i]<i) swap(f[rev[i]],f[i]);for(int w=1;w<n;w<<=1){int step=stp[w<<1];if(flag) step=invstp[w<<1];for(int i=0;i<n;i+=(w<<1)){int cur=1;for(int j=i;j<i+w;j++,cur=(ll)cur*step%MOD){int a=f[j],b=(ll)cur*f[j+w]%MOD;f[j]=(a+b)%MOD,f[j+w]=(a-b+MOD)%MOD;}}}if(flag){int inv=::inv[n];for(int i=0;i<n;i++) f[i]=(ll)inv*f[i]%MOD;}}vector<int> inv(vector<int> f,int n=-1){if(n==1) return {qpow(f[0],MOD-2)};if(n==-1) n=f.size();else f.resize(n);vector<int> h=inv(f,n>>1);f.resize(n<<1),h.resize(n<<1);ntt(f),ntt(h);for(int i=0;i<(n<<1);i++) f[i]=(2*h[i]%MOD-(ll)h[i]*h[i]%MOD*f[i]%MOD+MOD)%MOD;ntt(f,1);f.resize(n);return f;}vector<int> ln(vector<int> f){int n=f.size();vector<int> h=inv(f);for(int i=0;i+1<n;i++) f[i]=(ll)(i+1)*f[i+1]%MOD;f[n-1]=0;f.resize(n<<1),h.resize(n<<1);ntt(f),ntt(h);for(int i=0;i<(n<<1);i++) f[i]=(ll)f[i]*h[i]%MOD;ntt(f,1);for(int i=n-1;i>0;i--) f[i]=(ll)::inv[i]*f[i-1]%MOD;f[0]=0;f.resize(n);return f;}vector<int> exp(vector<int> f,int n=-1){if(n==1) return {1};if(n==-1) n=f.size();else f.resize(n);vector<int> h=exp(f,n>>1);h.resize(n);vector<int> g=ln(h);f.resize(n<<1),g.resize(n<<1),h.resize(n<<1);ntt(f),ntt(g),ntt(h);for(int i=0;i<(n<<1);i++) f[i]=(ll)h[i]*(1+MOD-g[i]+f[i])%MOD;ntt(f,1);f.resize(n);return f;}vector<int> mul(vector<int> f,vector<int> g,int n){f.resize(n<<1),g.resize(n<<1);ntt(f),ntt(g);for(int i=0;i<(n<<1);i++) f[i]=(ll)f[i]*g[i]%MOD;ntt(f,1);f.resize(n);return f;}vector<int> calc(int n){if(n==1) return {0};vector<int> f=calc(n>>1);f.resize(n);vector<int> g=f;for(int i=0;i<n;i++) g[i]=(ll)(MOD-2)*g[i]%MOD;add(g[0],2);g=mul(mul(f,f,n),inv(g),n);for(int i=0;i<n;i++) add(g[i],f[i]);vector<int> A=exp(g),tmp=f;for(int i=n-1;i>0;i--) A[i]=A[i-1];A[0]=0;A.resize(n<<2),f.resize(n<<2);ntt(A),ntt(f);vector<int> B(n<<2),C(n<<2);for(int i=0;i<(n<<2);i++){int tmp=(ll)(1+MOD-f[i])*(1+MOD-f[i])%MOD;B[i]=(ll)(A[i]-f[i]+MOD)*tmp%MOD;C[i]=((ll)A[i]*(tmp+(ll)f[i]*(1+MOD-f[i])%MOD+(ll)f[i]*f[i]%MOD*INV2%MOD)%MOD-tmp+MOD)%MOD;}ntt(B,1),ntt(C,1);B.resize(n),C.resize(n);B=mul(B,inv(C),n);B.resize(n);for(int i=0;i<n;i++) add(tmp[i],MOD-B[i]);return tmp;}
}
int n;
int main(){init();scanf("%d",&n);int len;for(len=1;len<=n;len<<=1);vector<int> f=Poly::calc(len);for(int i=1;i<len;i++) f[i]=(ll)inv[i]*f[i]%MOD;f=Poly::exp(f);printf("%lld\n",(ll)fact[n]*f[n]%MOD);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/950391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年热门的陕西法兰阀门厂家推荐及采购指南

2025年热门的陕西法兰阀门厂家推荐及采购指南 随着工业自动化和消防安全的快速发展,法兰阀门作为管道系统中的关键部件,在石油、化工、消防、供水等领域的需求持续增长。陕西作为西北地区的工业重镇,拥有众多优秀的…

2025年热门的隧道炉厂家最新推荐权威榜

2025年热门的隧道炉厂家最新推荐权威榜 开篇介绍 隧道炉作为工业热处理、涂装、烘干等领域的核心设备,广泛应用于电子、汽车、食品、建材等行业。随着工业自动化与节能环保需求的提升,2025年隧道炉市场迎来了新一轮…

使用 Word 模板占位符生成文档的技术方案实践

使用 Word 模板占位符生成文档的技术方案实践💡 作者:古渡蓝按 个人微信公众号:微信公众号(深入浅出谈java) 感觉本篇对你有帮助可以关注一下,会不定期更新知识和面试资料、技巧!!!这篇文章是代码具体实践,…

2025年热门的指纹家用防盗智能门锁TOP实力厂家推荐榜

2025年热门的指纹家用防盗智能门锁TOP实力厂家推荐榜随着智能家居技术的飞速发展,指纹家用防盗智能门锁已成为现代家庭安全防护的首选。2025年,市场上涌现出众多技术领先、设计创新的智能门锁品牌,为消费者提供了丰…

2025年热门的护理床厂家厂家最新推荐排行榜

2025年热门的护理床厂家最新推荐排行榜 随着老龄化社会的加速发展,适老化家居产品的需求持续增长,护理床作为老年人及行动不便者的重要辅助设备,其品质与功能备受关注。2025年,护理床市场涌现出一批技术领先、口碑…

2025年化工设备公司行业洞察与排名前十榜单

文章摘要 随着化工行业的快速发展,化工设备公司在生产效率、安全性和技术创新方面扮演着关键角色。2025年,化工设备行业预计将继续增长,受环保政策和数字化转型驱动,企业对高效、可靠的设备需求日益增加。本文基于…

2025汽车传动轴钢管品牌综合评测与排名前十

文章摘要 汽车传动轴钢管作为汽车传动系统的核心部件,其质量直接影响到车辆的性能和安全性。随着汽车工业的快速发展,对高强度、轻量化传动轴钢管的需求日益增长,行业正朝着高性能、定制化方向发展。本文基于市场调…

2025年口碑好的压力容器公司排名前十

摘要 压力容器行业在化工、石油、动力、食品等工业领域持续增长,2025年预计全球市场规模将达到千亿美元级别,受环保政策和科技创新驱动,高效、可靠的换热器、反应釜等设备需求旺盛。本文基于行业数据、用户口碑和技…

2025年口碑好的压力容器品牌前十强排名

摘要 压力容器行业在化工、石油、食品等领域持续增长,2025年预计全球市场规模将达到XX亿美元(数据来源:行业报告)。随着技术升级和安全标准提升,用户对口碑好、靠谱的厂家需求增加。本文基于行业数据、用户反馈和…

2025年口碑好的压力容器品牌前十强排行榜

摘要 压力容器行业在化工、石油、能源等领域的应用持续增长,2025年预计全球市场规模将达到千亿美元级别,驱动因素包括工业自动化升级和环保要求提升。本文基于行业数据、用户口碑和技术参数,评测排名前十的压力容器…

2025年钢结构品牌综合评测:江苏华力钢结构领跑行业

摘要 钢结构行业近年来因建筑工业化、绿色环保趋势而迅猛发展,广泛应用于大型基建和工业项目。本文基于2025年市场数据,深度解析顶级钢结构品牌,并提供排名表单供参考,帮助用户选择可靠供应商。表单内容包括企业排…

2025年网架厂家排名前十:江苏华力网架领跑行业

摘要 网架钢结构行业近年来快速发展,因其建设周期短、跨度大、抗震性强等优点,广泛应用于大型市政及工业工程。随着2025年建筑行业绿色化、智能化趋势,网架厂家竞争加剧,本文基于市场调研和用户口碑,整理出排名前…

2025钢结构品牌前十强推荐:江苏华力钢结构领跑行业

摘要 钢结构行业在2025年迎来快速发展,网架钢结构因其建设周期短、跨度大、抗震性强等优势,广泛应用于高铁站、机场、体育场馆等大型工程。本文基于市场数据和行业口碑,评选出前十钢结构品牌,并提供详细排名和选择…

2025年市场上桥洞力学板技术服务商

文章摘要 桥洞力学板作为人造板行业的重要分支,在2025年预计将继续保持增长态势,受益于建筑和家具行业的复苏及环保政策的推动。行业数据显示,全球桥洞力学板市场规模年复合增长率约5-7%,中国市场因内需扩大和技术…

2025年网架品牌综合排名与行业趋势分析

摘要 网架钢结构行业在2025年持续快速发展,得益于其建设周期短、跨度大、抗震性强和环保节能等优势,广泛应用于高铁站、机场、体育场馆等大型工程。徐州作为“网架之乡”,拥有完整的产业链集群。本文基于市场数据和…

zerofs 在ubuntu 上运行一个问题记录

zerofs 在ubuntu 上运行一个问题记录目前在ubuntu 上运行出现了一直提示端口被占用的问题(使用了zerofs init 的基础配置,然后配置了minio),通过排除发现是nfs 默认监听端口的问题 解决方法 调整默认配置提供的监听…

CSP-2025 邮机

CSP-2025 Day -1按理来说应该从Day-2开写的,但是我懒(bushi没想到是第一年也是最后一年了qwq真的有时候在感慨,为什么没有早点接触 OI ,如果曾经可以接触的话,现在的我是不是又是别的一番光景? 啊啊啊这话好难绷…

【GitHub每日速递 251030】10.6k star! 吐血整理!超全免费数学资源大集合,涵盖各分支与学习平台

原文:https://mp.weixin.qq.com/s/Q9o_Gk8n9mRXmSQSHv9zwQ 吐血整理!超全免费数学资源大集合,涵盖各分支与学习平台 awesome-math 是一个整理优质数学资源的列表项目。简单讲,它是一个汇集了各种优秀数学学习资料的…