zoukankan      html  css  js  c++  java
  • [整理]多项式/生成函数题目泛刷

    洛谷P5408 第一类斯特林数·行

    众所周知,第一类斯特林数可用于普通幂和上升幂之间的转换:(x^{overline{n}}=sumlimits_{i=0}^negin{bmatrix}n\iend{bmatrix}x^i),也就是说我们需要快速求上升幂。
    考虑倍增,有 (x^{overline{2n}}=x^{overline{n}}(x+n)^{overline{2n}}),瓶颈在于后面的 ((x+n)^{overline{2n}})
    如何转化呢?其实就是把 (x+n) 复合到一个函数 (f(x)) 中,我们把组合数展开,再将差卷积化为和卷积。设 (g(i)=i!a_i)(h(x)=dfrac{n^i}{i!}),再引入 (g') 作为 (g) 反转指数的结果,那么易见

    [egin{aligned} f(x+n)&=sum_{j=0}^ndfrac{x^j}{j!}sum_{i=0}^{n-j}g(i+j)h(i)\ &=sum_{j=0}^ndfrac{x^j}{j!}sum_{i=0}^{n-j}g'(n-j-i)h(i)\ end{aligned} ]

    上式平凡,略去代码。细节巨大多,请谨慎编写

    洛谷P5395 第二类斯特林数·行

    众所周知第二类斯特林数有通项 (egin{Bmatrix}n\mend{Bmatrix}=sumlimits_{i=0}^mdfrac{(-1)^{m-i}i^n}{i!(m-i)!}),这个公式可以用二项式反演证明:考虑 (n) 个元素放到 (m) 个集合中的方案数 (m^n),它等价于选出若干个非空集合再放入元素,也就是 (m^n=sumlimits_{i=0}^mm^{underline{i}}egin{Bmatrix}n\iend{Bmatrix}=sumlimits_{i=0}^mi!dbinom miegin{Bmatrix}n\iend{Bmatrix})
    二项式反演即得通项,证明留作练习。
    这个通项显然是一个卷积式,于是此题易解。

    洛谷P5409 第一类斯特林数·列

    我们从生成函数的角度考虑,众所周知圆排列(即 (k=1) 的情况)的 EGF 是 (lndfrac1{1-x}),所以 (egin{bmatrix}i\kend{bmatrix}) 的 EGF 显然为 (dfrac{(lnfrac1{1-x})^k}{k!}),于是此题易解。

    洛谷P5396 第二类斯特林数·列

    同上一道题的处理方式,(k=1) 时的 EGF 就是 (e^x-1),所以 (egin{Bmatrix}i\kend{Bmatrix}) 的 EGF 为 (dfrac{(e^x-1)^k}{k!})
    注意此解为错解且可能被卡,但是正解看起来很麻烦作者懒得推,于是就先咕掉。

    洛谷P2767 树的数量

    开题一看是傻逼题,直接碾生成函数 (F=x(1+F)^m),那么它的复合逆 (G) 显然为 (dfrac{x}{(1+x)^m}),于是拉反一下就有 ([x^n]F=dfrac1n[x^{n-1}](1+x)^{nm}=dfrac{inom{nm}{n-1}}{n})

    洛谷P4491 [HAOI2018]染色

    看到恰好先容斥掉,设 (t(k))(k) 种颜色出现了至少 (s) 次的方案数,(f(k))(k) 种颜色出现了恰好 (s) 次的方案数,那么 (t(k)=sumlimits_{i=k}^ndbinom ikf(i)),二项式反演即得 (f(k)=sumlimits_{i=k}^n(-1)^{i-k}dbinom ikt(i))。而 (t(i)) 是很好求的,它等于 (dbinom{n}{is}dbinom midfrac{(is)!}{(s!)^i}(m-i)^{n-is}),组合意义是先钦定 (is) 个位置,选 (i) 种颜色,剩余颜色随便放。
    运用 P5408 的套路,设 (g(k)=dfrac{(-1)^k}{k!},h(k)=k!t(k),h'(k)=h(n-k)),那么方案数就是 (dfrac1{k!}sumlimits_{i=0}^{n-k}g(i)h(n-k-i)),暴力卷即可。

    洛谷P5219 无聊的水题 I

    题目中出现了树计数和点的度数,我们很自然地转化成 Prüfer 序列,题目也就是问 (n) 个数排成长 (n-2) 的序列,出现次数最多的恰好出现了 (m-1) 次的方案数。
    还是套路地将恰好容斥掉,考虑计数出现至多 (m-1) 次的减去至多 (m-2) 次的。
    写出每个元素的 EGF:(F=sumlimits_{i=0}^{m-1}dfrac{x^i}{i!}),那么答案就是 ([x^{n-2}]F^n)

    洛谷P4931 [MtOI2018]情侣?给我烧了!(加强版)

    EI 为这题提供了一个极为巧妙的解法,整理如下(但是 EI 神仙的过程实在过于简洁,导致我卡了很长时间)
    首先我们设 (D_{k})(k) 对情侣都不在一排的方案数,恰好 (k) 对在一排的方案数就是 (dbinom nk^2k!2^kD_{n-k}),组合意义是选 (k)(k) 对情侣排列后剩下的错排。
    题目中提示了总方案数,那么显然有 (sumlimits_{k=0}^ndbinom nk^2k!2^kD_{n-k}=(2n)!)
    组合数的平方是什么鬼?我们突然想到,由于 EGF 可以卷积出一个组合数,那么我弄一个跟 EGF 类似,只不过每一项带的是 (dfrac{1}{(i!)^2}) 的东西就可以卷出来组合数平方了。
    于是变成了 (D(x)e^{2x}=dfrac1{sqrt{1-4x}})
    稍微解释一下右边是怎么来的,EI 和很多人都把这里略了。现在我们要求 (sumlimits_idfrac{(2i)!}{(i!)^2}x^i=sumlimits_idbinom{2i}ix^i),由于 (dbinom{i-1/2}{i}=dfrac{inom{2i}i}{4^i})(容易计算得出),所以原式即为 (sumlimits_idbinom{i-1/2}{i}4^ix^i),运用上指标反转有 (sumlimits_i(-1)^idbinom{-1/2}{i}4^ix^i=(1-4x)^{-1/2})(这个式子据说还挺重要?)。
    求导有 (D'(x)=dfrac{8x}{1-4x}D(x)),提取系数则有 (D_n=4n(n-1)D_{n-1}+8n(n-1)^2D_{n-2}),于是可以递推求解。

    洛谷P4233 射命丸文的笔记

    答案其实是哈路总数比上有哈路的图数。
    竞赛图的哈路总数很好求:选 (n-1) 条边连成环,剩下的随便连,答案是 ((n-1)!2^{n(n-1)/2-n})
    众所周知有哈路的充要条件是强连通(感性理解),我们需要统计强连通竞赛图的数量。
    发现普通竞赛图的 EGF(设为 (F))很好求,考虑用强连通的(设为 (G))表示普通的。
    由图论知识,一个竞赛图缩点后会变成一条链状的 DAG,边从前连到后。所以把普通竞赛图看成一排强连通竞赛图,有 (F=dfrac1{1-G}),所以 (G=1-dfrac1F)

    洛谷P4091 [HEOI2016/TJOI2016]求和

    傻逼推式子,没啥好说的。

    [egin{aligned} sum_{i=0}^nsum_{j=0}^ij!2^jegin{Bmatrix}i\jend{Bmatrix}&=sum_{i=0}^nsum_{j=0}^nj!2^jegin{Bmatrix}i\jend{Bmatrix}\ &=sum_{i=0}^ni!2^isum_{j=0}^nsum_{k=0}^idfrac{(-1)^{i-k}k^j}{k!(i-k)}\ &=sum_{i=0}^ni!2^isum_{k=0}^idfrac{(-1)^{i-k}}{k!(i-k)}sum_{j=0}^nk^j end{aligned} ]

    卷积的形式水落石出。
    不过这题有些奇特的边界条件,写的时候需要注意。
    EI 对此给出了一个线性做法,有空补。咕咕咕

    洛谷P5748 集合划分计数

    如果你熟知 Bell 数的 EGF 是 (e^{e^x-1}) 那就做完了,这里主要简述一下推导过程,以帮助像我一样没看过/记不住的人。
    Bell 数是将 (n) 个数分成若干集合的方案数,平凡地我们有分成一个集合的方案数的 EGF:(e^x-1),那么根据 (exp) 的组合意义就有上式。

    CF960G Bandit Blues

    题目长得十分 dp,我们先写一个式子:(f_{i,j}) 表示放了 (i) 个数,有 (j) 个前缀最大值的方案数,枚举最小数的位置不难得到 (f_{i,j}=f_{i-1,j-1}+(i-1)f_{i-1,j}),对递推式敏感的人可能一眼就能看出它是第一类斯特林数。
    而答案的计算也很简单:我们钦定全局最大值的位置,那么答案为 (sumlimits_{i=1}^{n-1}egin{bmatrix}i\a-1end{bmatrix}egin{bmatrix}n-i-1\b-1end{bmatrix}dbinom{n-1}{i}),之后按照第一类斯特林数·列的处理方式计算,或者再由组合意义推一步化为封闭形式 (egin{bmatrix}n-1\a+b-2end{bmatrix}dbinom{a+b-2}{a-1})
    双倍经验洛谷 P4609。

    洛谷P2791 幼儿园篮球题

    先写出式子:(dfrac{sum_{i=0}^mdbinom{m}{i}dbinom{n-m}{k-i}i^L}{dbinom{n}{k}}),我们发现难点主要在分子,考虑如何快速计算。

    [egin{aligned} &sum_{i=0}^mdbinom{m}{i}dbinom{n-m}{k-i}i^L\ =&sum_{i=0}^mdbinom{m}{i}dbinom{n-m}{k-i}sum_{j=0}^Legin{Bmatrix}L\jend{Bmatrix}dbinom{i}{j}j!\ =&sum_{j=0}^Legin{Bmatrix}L\jend{Bmatrix}j!sum_{i=0}^mdbinom{m}{i}dbinom{i}{j}dbinom{n-m}{k-i}\ =&sum_{j=0}^Legin{Bmatrix}L\jend{Bmatrix}dbinom{m}{j}j!sum_{i=0}^mdbinom{n-m}{k-i}dbinom{m-j}{i-j}\ =&sum_{j=0}^Legin{Bmatrix}L\jend{Bmatrix}dbinom{n-j}{k-j}dbinom{m}{j}j!\ end{aligned} ]

    预处理第二类斯特林数就可以 (O(L)) 做了。

    内容来自_ajhfff_的博客(https://www.cnblogs.com/juruoajh/),未经允许,不得转载。
  • 相关阅读:
    循环
    pl/sql小结
    poi编程
    Activiti工作流面试相关知识!
    工作流学习——Activiti流程变量五步曲
    工作流学习——Activiti流程实例、任务管理四步曲
    工作流学习——Activiti流程定义管理三步曲
    工作流学习——Activiti整体认识二步曲
    工作流学习——重要概念扫盲篇一步曲
    Activiti工作流数据库表详细介绍(23张表)
  • 原文地址:https://www.cnblogs.com/juruoajh/p/14810505.html
Copyright © 2011-2022 走看看