生成函数【Nowcoder】

普通生成函数

应用:从数种物品中选出K个物品的方案数。

形式幂级数

  • 定义在这里插入图片描述

  • 简单运算
    请添加图片描述

  • 形式幂级数的逆元(封闭形式)
    具体推导见:普通生成函数的封闭形式
    请添加图片描述

  • 性质:

      1. 1 1 − x = ∑ i ⩾ 0 x i ← ( 1 + x + x 2 + x 3 + . . . ) \frac{1}{1-x} = \sum_{i\geqslant0}x^i\leftarrow(1+x+x^2+x^3+...) 1x1=i0xi(1+x+x2+x3+...)
      1. 1 1 − a x = ∑ i ⩾ 0 a i x i ← ( 1 + a x + a 2 x 2 + a 3 x 3 + . . . ) \frac{1}{1-ax} = \sum_{i\geqslant0}a^ix^i\leftarrow(1+ax+a^2x^2+a^3x^3+...) 1ax1=i0aixi(1+ax+a2x2+a3x3+...)
      1. 1 ( 1 − x ) k = ∑ i ⩾ 0 ( i + k − 1 i / ( k − 1 ) ) x i \frac{1}{(1-x)^k} = \sum_{i\geqslant0}\dbinom{i+k-1}{i/(k-1)}x^i (1x)k1=i0(i/(k1)i+k1)xi
      1. 1 − x k + 1 1 − x = 1 + x + x 2 + . . . + x k ( 一共是 k + 1 项 ) \frac{1-x^{k+1}}{1-x} = 1+x+x^2+...+ x^k(一共是k+1项) 1x1xk+1=1+x+x2+...+xk(一共是k+1)

    第4条参考:1-x^3

Catalan数:

  • n=3时,C(3) = 5很有可能是卡特兰数!!
  • 任意前缀0的个数>=1的个数–卡特兰数!!
  • 通项公式: C ( n ) = 1 n + 1 C ( 2 n , n ) C(n) = \frac{1}{n + 1}C(2n, n) C(n)=n+11C(2n,n)
    请添加图片描述

指数生成函数

  • 应用:从数种物品中选出来k个物品并排序的方案数。

步骤:

  1. 先列出每种物品的生成函数 f i ( x ) f_i(x) fi(x),并将其化简为其封闭形式
  2. 求出 C ( x ) = ∏ i = 1 n f i ( x ) C(x) =\prod_{i=1}^n f_i(x) C(x)=i=1nfi(x),将其化简。
  3. A n s = k ! ∗ [ x k ] C ( x ) = k ! ∗ a k k ! = a k Ans = k! * [x^k]C(x) = k! * \frac{a_k}{k!} =a_k Ans=k![xk]C(x)=k!k!ak=ak
  • 定义:
    在这里插入图片描述
    请添加图片描述
    请添加图片描述
  • 性质:
      1. e x p ( x ) ∗ e x p ( − x ) = 1 exp(x)*exp(-x)= 1 exp(x)exp(x)=1
      1. e x p ( x ) a = e x p ( a x ) exp(x)^a=exp(ax) exp(x)a=exp(ax)

例题:

Sweet-普通生成函数

  • 当y关于m的逆元不存在时计算 x y \frac{x}{y} yx
x/y = [x%(y*m)]/y
reference link: https://www.luogu.com.cn/problem/solution/P6078

Lust-指数生成函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值