首页 > 其他分享 >生成函数浅谈

生成函数浅谈

时间:2023-05-02 17:55:56浏览次数:43  
标签:frac 浅谈 sum 生成 cdots binom 函数

羊驼说,要当老师,所以强大的羊驼教会了我们生成函数。

羊驼说,我们有卷积,所以生成函数的问题通常可以在带 \(log\) 的时间复杂度内解决这类问题。

普通型生成函数

数列 \(1,1,1,1,1,1\) 的普通型生成函数就是 \(1+x+x^2+x^3+x^4+x^5\)。

而数列 \(1,1,\cdots,1,1,\cdots\) 的普通型生成函数就是 \(1+x+x^2+x^2+\cdots +x^n+\cdots\)。

羊驼说,写成展开形式形式太麻烦,所以羊驼教会了我们封闭形式。

设 \(F(x)=1+x+x^2+x^3+x^4+x^5\)

则 \(xF(x)=x+x^2+x^3+x^4+x^5\)

所以 \(F(x)=\frac{1-x^6}{1-x}\)

对于无穷数列也是同理,我们可以假定它收敛,得到封闭形式。

设 \(F(x)=1+x+x^2+\cdots\)

则 \(xF(x)=x+x^2+x^3+\cdots\)

所以 \(F(x)=\frac{1}{1-x}\)

下面是一些常用的无穷数列普通型生成函数的封闭形式和展开形式的对应关系:

\(a_i=p^i x^i,F(x)=\frac{1}{1-px}\)

\(a_i=x^{pi},F(x)=\frac{1}{1-x^p}\)

\(a_i=(i+1)x^i,F(x)=\frac{1}{(1-x)^2}\)

\(a_i=\binom m i x^i,F(x)=(1+x)^m\)(二项式定理)

指数型生成函数

羊驼说,她不会组合数,所以就有了指数型生成函数。

\(1,1,\cdots\) 的指数型生成函数就是 \(1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\cdots\)

指数型生成函数通常用来消掉组合数中的阶乘,并且一般是无穷数列。

对于指数型生成函数的封闭形式和展开形式来说,二者对应关系如下:

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

因此,指数型生成函数的封闭形式通常是 \(e\) 的幂次。

下面是一些常用的无穷数列指数型生成函数的封闭形式和展开形式的对应关系:

\(a_i=\frac{x^i}{i!},F(x)=e^x\)

\(a_i=(-1)^i\frac{x^i}{i!},F(x)=e^{-x}\)

\(a_i=\frac{x^{2i}}{2i!},F(x)=\frac{e^x+e^{-x}}{2}\)

\(a_i=\frac{x^{2i+1}}{(2i+1)!},F(x)=\frac{e^x-e^{-x}}{2}\)

于是我们就学会了生成函数。

例题

羊驼说,要有例题,所以我们来到了 P2000 拯救世界

两位大神的召唤方法显然都可以写成收封闭形式,只要约一下分,就可以得到最终的封闭形式。

\(kkksc03\):

金:\(F(x)=\frac{1}{1-x^6}\)

木:\(F(x)=\frac{1-x^{10}}{1-x}\)

水:\(F(x)=\frac{1-x^6}{1-x}\)

火:\(F(x)=\frac{1}{1-x^4}\)

土:\(F(x)=\frac{1-x^8}{1-x}\)

\(lzn\):

金:\(F(x)=\frac{1}{1-x^2}\)

木:\(F(x)=\frac{1-x^2}{1-x}\)

水:\(F(x)=\frac{1}{1-x^8}\)

火:\(F(x)=\frac{1}{1-x^{10}}\)

土:\(F(x)=\frac{1-x^4}{1-x}\)

乘起来可得:

\[F(x)=\frac{1}{(1-x)^5} \]

再转换回展开形式:

\[F(x)=\sum_{i=0}^{\infty}\binom {n+5-1} {5-1} x^i \]

答案即为 \(\binom {n+4} 4\)。

可以用 \(NTT\) 加速高精度。

羊驼说,这种板子题太简单,所以就有了 P4841 城市规划

我们枚举 \(1\) 节点所在的连通块大小,设 \(f(x)\) 是合法连通图数量,\(g(x)\) 是合法图数量,则可得 \(g(n)=\sum_{i=1}^n \binom {n-1} {i-1} f(i)g(n-i)\)

同时我们已知 \(g(n)=2^{\binom n 2}\),开始推柿子。

\(\begin{alignedat}{2}2^{\binom n 2}&=\sum_{i=1}^n \binom {n-1} {i-1} f(i)2^{\binom {n-i} 2}\\ \frac{2^{\binom n 2}}{(n-1)!}&=\sum_{i=1}^n \frac{f(i)}{(i-1)!}\frac{2^{\binom {n-i} 2}}{(n-i)!} \end{alignedat}\)

\[F(x)=\sum_{i=1}^{\infty}\frac{f(i)}{(i-1)!} \]

\[G(x)=\sum_{i=1}^{\infty}\frac{2^{\binom i 2}}{(i-1)!} \]

\[H(x)=\sum_{i=0}^{\infty}\frac{2^{\binom i 2}}{i!} \]

多项式求逆即可。

标签:frac,浅谈,sum,生成,cdots,binom,函数
From: https://www.cnblogs.com/mikefeng/p/17367986.html

相关文章

  • process explorer 如何生成转储(dmp)文件
    我是直接使用procexpdump的,因为默认的任务管理器不是所有的process都能dump。   任务管理器dump任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能。但要注意的是在64位操作系统上面,默认启动的是64位的任务管理器。使用任务管理器生成转储文件需要遵......
  • 导数浅谈
    本文知识部分由AKauto和mashduihca倾情提供目录导数表及其证明导数运算法则及其证明练习题前言函数的导数是表示函数在某一点的切线斜率的函数。前置知识:\[\lim_{x\to\infty}e=(1+\frac{1}{x})^x\]\[\lim_{x\to0}\frac{\sinx}{x}=1\]导数表及其证明\(f(......
  • 基础-函数-流程控制函数
    流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。 MySQL的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景,思考一下需要用到什么样的函数来实现?1).数据库中,存储的是入职日期,如2000-01-01,如何快速计算出入职天......
  • 基础-函数-数值函数
    常见的数值函数如下:ceil:向上取整selectceil(1.1);floor:向下取整selectfloor(1.9);mod:取模selectmod(7,4);rand:获取随机数selectrand();round:四舍五入selectround(2.344,2);案例:通过数据库的函......
  • 基础-函数-日期函数
    curdate:当前日期selectcurdate();curtime:当前时间selectcurtime()now:当前日期和时间selectnow()YEAR,MONTH,DAY:当前年、月、日selectYEAR(now());selectMONTH(now());selectDAY(now());date_add:增加指定的时间间隔selectdate_a......
  • 基础-函数-字符串函数
    A.concat:字符串拼接selectconcat('Hello','MySQL');B.lower:全部转小写selectlower('Hello');C.upper:全部转大写selectupper('Hello');lpad:左填充selectlpad('01',5,'-');rpad:右填充sel......
  • 利用Linux系统生成随机密码的8种方法
    Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它。例如,你可以通过数十种方法来生成随机密码。本文将介绍生成随机密码的十种方法。1.使用SHA算法来加密日期,并输出结果的前10个字符:[root@kafka60shell]#date+%s|sha256sum|base64|head-c10......
  • 基础-聚合函数
    count  统计数量max   最大值min   最小值avg   平均值sum   求和注意:NULL值是不参与所有聚合函数运算的。selectcount(*)fromemp;--统计的是总记录数selectcount(idcard)fromemp;--统计的是idcard字段不为null的记录数selectavg(age)......
  • 浅谈如何使用 github.com/kardianos/service
    在实际开发过程中,有时候会遇到如何编写Go开机自启服务的需求,在linux中我们可以使用systemd来进行托管,windows下可以通过注册表来实现,mac下可以通过launchd来实现,上面的方式对于开发者来说,并不是什么困难的事情,但是对于使用者而言,是并不希望通过这么复杂的方式来达到开机自启的功能......
  • unity发布到4399的webgl模式问题:FRAMEWORK.JS中的WEBREQUEST_SEND括号内的函数(不能有
    在发布4399的时候,之前遇到过这个问题,解决方法当然就是删除这个函数啦。步骤也很简单,但是刚开始摸不着头脑搞了好久,最后发现发布的时候有个加密选项,选择不加密,后面build的文件里面就可以进行打开修改,按照要求修改函数即可。......