【题解】带标号二分图计数
本文中 表示
带标号的二分图的数量不方便用一个式子直接写出,我们考虑用别的统计去推出它。
我们先求出连通二分图的生成函数,再求任意二分图的生成函数。
二分图想到黑白染色,二分图黑白染色的方案是好得到的:令 表示所有 个点的图的的黑白染色方案之和的生成函数,则有
稍微转化一下。
就是加法卷积的形式了。
当一个二分图连通时,其黑白染色的方案等于 ,所以找到连通二分图的黑白染色的生成函数就形了。
连通图——任意图 是一种典型的“集合——集族”关系,它们的指数生成函数满足以下关系:
其中任意图的指数生成函数为 ,连通图的为
做一次多项式 再对每一项除二得到二分连通图的指数生成函数,再使用“集合——集族”关系 回去即可。
会发现上述过程等价于给 开根,直接开根有更优秀的常数,时间复杂度都是 。
主要部分(因为我没想到对 的指数做一些很妙的转化,就直接用了二次剩余来处理除二的问题。其中 ):
n=1e5;
rep(i,0,n) f[i] = math::finv[i] * math::Pow(b,(ll)i*i%(mod-1)*(mod-2)) % mod ;
poly::work(n+n);
poly::NTT(f);
poly::pmul(f,f,f);
poly::iNTT(f);
poly::mem(f+n+1,poly::L-n);
rep(i,0,n) f[i]=(ll)f[i] * math::Pow(b,(ll)i*i) % mod;
poly::ln(f,n,g);
poly::nummul(g,n,i2,g);
poly::exp(g,n,f);
rep(i,1,n) wrt(f[i] * math::fac[i] % mod,'\n');
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17141530.html,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步