zoukankan      html  css  js  c++  java
  • 将容斥系数隐含在式子中的方法

    本文设( ilde f)表示生成函数(f)的指数生成函数。

    给定一个数(n),以及权值为(1,2,dots,n)(n)个点,对于(t=1,2,dots,n),设(z=所有(连通块内各点权值的最小值)的最大值),求满足(z=t)的无向图个数。(nleq 5*10^5)

    最大值为(t)不好直接考虑,先来一波前缀和,求(zleq t)的无向图个数。那么就是要求所有权值(>t)的点不能单组组成连通块。应用一般的容斥方法,统计包含某(k)个特定的仅由权值(>t)的点构成的连通块(称为非法连通块)作为子集的方案,这个方案的贡献是((-1)^k)。因为对于一个恰好含有(s)个非法连通块的方案,它的贡献是(sum_{k=0}^s (-1)^k{schoose k}=[s=0])

    那么,对于特定的(t),要统计(zleq t)的无向图个数,可以先枚举之前所述的(k),再枚举这(k)个非法连通块的总点数(i),用和(exp)类似的方法统计总数。则可以写成:

    [sum_{k=0}^{n-t}(-1)^kBigg(sum_{i=0}^{n-t}{n-tchoose i}g_{n-i}frac{1}{k!}igg(sum_{(sum_{s=0}^{k-1}a_s)=i,a_sin mathbb{N}^*}{ichoose a_0,a_1,dots,a_{k-1}}Big(prod_{i=0}^{k-1}f_{a_i}Big)igg)Bigg) ]

    其中(f)表示(n)个点组成的无向连通图的方案数的生成函数,(g)表示(n)个点组成的无向图的方案数的生成函数。进一步转化式子:

    [sum_{k=0}^{n-t}frac{(-1)^k}{k!}Bigg(sum_{i=0}^{n-t}{n-tchoose i}i!g_{n-i}igg(sum_{(sum_{s=0}^{k-1}a_s)=i,a_sin mathbb{N}^*}Big(prod_{i=0}^{k-1}frac{f_{a_i}}{a_i!}Big)igg)Bigg) ]

    [sum_{k=0}^{n-t}frac{(-1)^k}{k!}Bigg(sum_{i=0}^{n-t}{n-tchoose i}i!g_{n-i}( ilde f^k)_iBigg) ]

    [sum_{i=0}^{n-t}{n-tchoose i}i!g_{n-i}Bigg(sum_{k=0}^{n-t}frac{(- ilde f)^k}{k!}Bigg)_i ]

    [sum_{i=0}^{n-t}{n-tchoose i}i!g_{n-i}(e^{- ilde f})_i ag{$*$} ]

    我们考虑(e^{ ilde f}= ilde g),因此(e^{- ilde f}=frac{1}{ ilde g}),因此原式可转化为:

    [sum_{i=0}^{n-t}{n-tchoose i}i!g_{n-i}(frac{1}{ ilde g})_i ]

    [(n-t)!sum_{i=0}^{n-t}g_{n-i}(frac{1}{ ilde g})_i*frac{1}{(n-t-i)!} ]

    显然(g)可以直接求出,再利用多项式求逆求出(frac{1}{ ilde g}),并令(h_i=g_{n-i}(frac{1}{ ilde g})_i),则原式可转化为卷积形式,( m FFT)计算即可。

    本题不需要什么黑科技只要求逆就好了,真是清真呢。

    回顾一下,之前的推导最终转化成了((*))式这样简单的形式,可以思考一下这一式子是否有直接的组合意义。该式的意义就在于,之前所说的容斥系数在这里并没有显式的表现出来,而是隐含在了(e^{- ilde f})的系数中。将容斥系数隐含在式子中后,我们可以在外层直接枚举与容斥系数没有直接关系的(i),也就是非法连通块的总点数,从而自动达到容斥的目的。这样的将容斥系数拆解到式子中的方法在一些组合计数问题中有时会出现,比如( m CTS2019)的最后一题。

    当然,正如之前的推导所示,思路比较直接的方法在本题也能得到同样的结果。不过,如果在做组合计数时有意识的利用该方法变形,也可以大大简化思路,甚至做到直接推导很难得到的结果。

    本题是我以前和一个现在已经是集训队大佬的假雪菜同学一起原创的,但这股套路的气息让我感觉它说不定已经在哪里出现过了。无论如何,如果这篇文章对还未退役的你有帮助的话,也不枉我这只退役狗在午休的时间狂码了。不过,写这篇文章主要还是因为我比较享受这个过程本身呢~

  • 相关阅读:
    Python3.x基础学习-静态方法和类方法
    Python3.x基础学习-@property
    Python3.x基础学习-装饰器
    SpringMVC学习(七)
    SpringMVC学习(六)
    SpringMVC学习(五)
    整合SSM(二)
    整合SSM(一)
    SpringMVC学习(四)
    SpringMVC学习(三)
  • 原文地址:https://www.cnblogs.com/Mr-Spade/p/12389325.html
Copyright © 2011-2022 走看看