• Problem. D


    题意简述:

    求在(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即可计算。

  • 相关阅读:
    Django对静态文件的处理——部署阶段
    使用Django来处理对于静态文件的请求
    Django1.7如何配置静态资源访问
    Spring WebSocket中403错误解决
    FastJSON JSONObject 字段排序 Feature.OrderedField
    国际化(i18n) 各国语言缩写
    【转】java.io.Closeable接口
    【转】spring bean 卸载
    This content should also be served over HTTPS
    Failed to close the ServletOutputStream connection cleanly, Broken pipe
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12292531.html
Copyright © 2020-2023  润新知