题意简述:
求在(n imes m)的棋盘上放若干个炮,使得炮相互不攻击的方案数,答案对(998244353)取模。
数据范围:
(1le nle mle10^5)
解法:
首先我们知道互不攻击等价于每行每列炮的数目(le2)。
然后考虑进行一个套路的转化:我们给每行每列建一个点,在((x,y))处放一个炮就在(x)行对应的点和(y)列对应的点之间连一条无向边。
这样我们会建出来一个(n+m)个点的二分图,其中左侧(n)个点,右侧(m)个点。
很显然的是放炮的方案和二分图的连边情况一一对应,且一个连边方案合法的充要条件是每个点的度数(le2)。
因为每个点的度数(le2)且这是一个二分图,所以这个图由一些偶环和一些奇链、偶链构成。
我们先考虑这三者的EGF:
偶环:
一个包含(2k(kge2))个点的偶环有(k)个左侧点和(k)个右侧点,其圆排列数为(frac{(k!)^2}{2k})。
因此偶环的EGF为(F(x,y)=sumlimits_{i=2}^{+infty}frac1{2i}x^iy^i)
偶链:
我们认为偶链的起点在左侧,终点在右侧。
一个包含(2k(kge1))个点的偶链有(k)个左侧点和(k)个右侧点,其排列数为((k!)^2)。
因此偶链的EGF为(G(x,y)=sumlimits_{i=1}^{+infty}x^iy^i)
奇链:
不妨考虑(k)个左侧点和(k+1)个右侧点的情况,其排列数为((2k+1)!)。
但是一条奇链会在两端被计算(2)次,因此答案要乘(frac12)。
(k+1)个左侧点和(k)个右侧点的情况同理。
因此奇链的EGF为(H(x,y)=x+y+frac12sumlimits_{i=1}^{+infty}x^iy^i(x+y))
那么最终的答案就是(n!m![x^nm^y]exp(F(x,y)+G(x,y)+H(x,y)))
但是这是个二元EGF的形式,根本无法处理。
注意到在偶环和偶链的EGF中(x,y)的指数都是相同的,而在奇链的EGF中(x,y)指数最多也只有(1)的差别。
因为我们要计算的是(x^ny^m)的系数,而一个左部的奇环会使得(x)的次数比(y)的次数大(1),一个右部的奇环会使得(y)的次数比(x)的次数大(1),因此右部的奇环比左部的奇环多(m-n)个。
因此我们可以通过枚举左侧奇环的个数来将答案转化为一元EGF的形式。
先考虑这三个部分的一元EGF:
偶环:(F(x)=sumlimits_{i=2}^{+infty}frac1{2i}x^i)
偶链:(G(x)=sumlimits_{i=1}^{+infty}x^i)
奇链:(H(x,y)=x+frac12sumlimits_{i=2}^{+infty}x^i)
那么最终的答案就是(n!m![x^m]exp(F(x)+G(x)sumlimits_{i=0}^nfrac{H(x)^{m-n+2i}}{x^ii!(m-n+i)!})
设(P(x)=sumlimits_{i=0}^{+infty}frac{x^i}{i!(m-n+i)!},Q(x)=frac{H(x)^2}{x})
那么答案就是(n!m![x^m]exp(F(x)+G(x))H(x)^{m-n}P(Q(x)))
注意到(H(x)=frac12(x+frac x{1-x}))
因此有(Q(x)=frac{x^3-4x^2+4x}{4(x-1)^2})。
那么我们有(P(Q(x))=sumlimits_{i=0}^{+infty}frac{Q(x)^i}{i!(m-n+i)!}=sumlimits_{i=0}^{+infty}frac{(x^3-4x^2+4x)^i}{4^ii!(m-n+i)!(x-1)^{2i}})
分治NTT即可计算。