ZROI 19.08.01 生成函数方法

写在前面:由于我数学基础不好,加上缺乏生成函数知识,所以这一下午我都处在掉线和非掉线的叠加态。而且我写(LaTeX)很慢,所以笔记相当混乱而且不全面。说白了就是我太菜了听不懂。


1.一般生成函数

直接把序列写成多项式的形式。可以做个背包。

  • 形式幂级数:只关心系数,不关心(x)的具体取值。只要运算方便,就可以把(x)取任意值来计算。

[1+x+x^2+…=frac{1}{1-x} ]

显然这个东西是不对的,比如(x=2)就gg了。

但是我们硬点(0<x<1),它就是对的。


  • 例题:求序列({0,1,4,…,n^2,…})的生成函数。

错位相减法去考虑就好。

[f(x)=sum_{i=0}i^2x^i ]

[xcdot f(x)=sum_{i=1}(i-1)^2x^i=sum_{i=1}i^2x^i+sum_{i=1}-2icdot x^i+sum_{i=1}x^i ]

[(1-x)f(x)=2sum_{i=1} icdot x^i-sum_{x=1}x^i=frac{2x}{(1-x)^2}-frac{x}{1-x} ]

[f(x)=frac{x^2+x}{(1-x)^3}=frac{x(x+1)}{(1-x)^3} ]

2.指数生成函数

形如(f(x)=sum frac{a_ix^i}{i!})的东西,卷积的时候会自动生成一个组合数,适合解决排列组合型问题。

[f(x)=sum_{i=0} frac{x^i}{i!}=e^x ]

(e^x)在零点处的展开就是上述式子,虽然我不知道怎么展开。

[f(x)=sum_{i=0} frac{x^{2i}}{(2i)!}=frac{e^x+e^{-x}}{2} ]

(x=-x)代入第一个式子,然后两项相加。

[f(x)=sum_{i=0} frac{x^{2i+1}}{(2i+1)!}=frac{e^x-e^{-x}}{2} ]

同理。


  • 循环卷积

大概就是卷积之后对下标取模的结果。

FFT的本质就是一维循环卷积,只不过保证(n)(循环节)比较长,所以不会溢出(即,此处不需要取模)。

也可以扩展到二维,需要对两维都DFT一遍,下标取模。甚至可以扩展到(k)维,对每一维都单独做就好了。


  • 为了循环卷积,我们需要对长度为循环节的数组做DFT,所以接下来老师讲了一个任意长度DFT的(O(klog k))神仙做法,而且我(几乎)听懂了,但是因为公式太长,我记不下来。出处是myy的paper。

  • (n)个点(m)条边的有向图,边权是一个二元组((a_i,b_i)),初始有一个二元组((0,0)),每经过一条边,权值会变为(((x+a_i)mod n, (y+b_i)mod(n-1)))。对每个三元组((i,x,y)),求出从点(i)出发,经过恰好(k)条边回到(i)点,最终权值为((x,y))的方案数。(nleq 22, k leq 10^9)

显然这是一个二维循环卷积。矩阵快速幂的每个元素看作一个矩阵,乘法定义为二维循环卷积。对每个转移矩阵里的循环卷积矩阵预处理DFT,就能把单次循环卷积的复杂度降为(O(n^2)),再进行矩阵快速幂,总复杂度(O(n^5log k))

(顺便一提,上面的东西我只能勉强理解,写是不可能写出来的)


  • 接下来是一个神题,好像是循环卷积开根,我掉线了。

  • (m)个点的图,任意一条长度为(k)的倍数的路径会对答案产生(C(n,len))的贡献,答案对(p)取模。(m leq 10,kleq 1000,p equiv1(mod k),nleq 10^{18})

每个点加一个自环,这样(C(n,len))就转化成了长度恰好为(n)的路径,且贡献都是(1)

考虑矩阵快速幂,但是每个点需要维护一个长度为(k)的数组,(f_i)表示长度(equiv i (mod k)),这个数组的乘法定义为循环卷积。

暴力做是(O(m^3k^2log n)),但是可以用我也不会的某种玄妙的插值做出DFT,做到(O(m^3klog n+k^2))


  • 与Polya定理结合:一个(n)个点的环,染成(m)种颜色,要求每种颜色恰好(c_i)个。

发现可以把Polya定理套进去,直接生成函数做就好。


  • 牛顿迭代

不会导数,不会Taylor展开,掉线了。


  • 多项式求逆/除法/(ln)/(exp)/多点求值/多点插值

左转你谷模板区,请。不过NOI到19年也没有考过FFT,估计这东西学了也没啥用。


  • (n)的分拆数(不降整数序列之和)。

(O(sqrt n))做法:

对于(a_ileq sqrt n)的情况,可以背包做。

否则,这样的(a_i)最多(sqrt n)个,可以暴力。

(O(n log n))做法:

多项式(ln),多项式积分,多项式(exp)

这是什么?不知道。


  • 然后又是一道神题,显然我又掉线了。

  • 然后又是一道神题,显然我又掉线了。

  • 然后又是一道神题,显然我又掉线了。

  • 然后又是一道神题,显然我又掉线了。

嗯,不是你的网卡了。

原文地址:https://www.cnblogs.com/suwakow/p/11375071.html