zoukankan      html  css  js  c++  java
  • 乱记结论之OI常用四大数列

    一、斐波那契数列

    $f(0)=1,f(1)=1,f(i)=f(i-1)+f(i-2) (i>=2)$

    经典的解释是兔子生小孩,第0年一对兔子,一对兔子需要一年长大,后面每年都生小孩,每次刚好生一对,问第i年有多少只。就这么算。

    经典的应用是矩阵乘法!稍微写一下:

    egin{vmatrix}
    1 & 1 \
    1 & 0
    end{vmatrix} * egin{vmatrix}
    f(i) \
    f(i-1)
    end{vmatrix} = egin{vmatrix}
    f(i+1)\
    f(i)
    end{vmatrix}

    二、卡特兰数

    $C(0)=C(1)=1,C(n)=sum_{k=0}^{n-1} C(k)C(n-k-1)$

    $C(n)=C(2n,n)-C(2n,n-1)$

    $C(n)=C(n-1)*(4*n-2)/(n+1)$

    例子多了。出入栈序列,划分三角形,走格子不越过对角线,等等。

    两种理解方式:分治,分成两个部分变成式一;计数,在瞎构造的序列中挑掉不合法的,对应方案是把第一个遇到不合法的位置以前全部取反,后面不变,建立一个和C(2n,n-1)的对应关系。

    三、贝尔数

    $B(n)=sum_{k=0}^{n-1} C(n-1,k)B(k)$

    贝尔数是第二类斯特林数的一行的和,直接用上面方法可nlogn求一个贝尔数。

    如果要求一系列贝尔数,考虑最后一个元素所在集合大小,有$f(i)=sum_{k=1}^{i} C_{i-1}^{k-1}f(i-k)$,一卷积,前面对后面有贡献,可CDQ+FFT在$nlog^2n$时间求解。

    贴图都是不懂的。

    三点五、范德蒙恒等式

    $C_{n+m}^k=sum_{i=0}^{k}C_n^iC_m^{k-i}$

    证明用生成函数。

    四、斯特林数

    第二类:s(n,m)--n个元素分到m个相同盒子,$s(n,m)=s(n-1,m-1)+s(n-1,m)*m$

    还可以这么玩:不考虑是否空盒子,那答案就$frac{m^n}{m!}$,然后容斥一下,枚举几个空盒子,$s(n,m)=frac{1}{m!}*sum_{i=0}^{m}(-1)^iC_m^i(m-i)^n$,后面一卷积,可用多项式乘法得一行斯特林数。

    他喜欢和指数玩:$i^j=sum_{k=1}^{j}S(j,k)k!C_i^k$

    第一类:s(n,m)--n个元素排成m个圈圈,$s(n,m)=s(n-1,m-1)+s(n-1,m)*(n-1)$,排在每个数的左边。

    五、默慈金数

    $M(n)$--一个圆上n个点,问点间连线不相交的方案。或者在坐标轴上,一步之内可以往左往右或不动,问最后到原点的方案。

    一、$M(n+1)=M(n)+sum_{i=0}^{n-1}M(i)M(n-1-i)=frac{(2n+3)M(n)+3nM(n-1)}{n+3}$

    二、$M(n)=sum_{i=0}^{left lfloor frac{n}{2} ight floor}C_n^{2i}Cat(i)$

    (不是很懂这字咋变小了)

  • 相关阅读:
    读写excel的组件
    一个关于C#语言中的Property的低级BUG,花了我二十分钟
    使用wwAppConfiguration类库来轻松读写应用程序配置信息
    为因地震死难的同胞默哀
    页面执行时生成静态文件的方法
    【转载】sp_spaceused2,看库里全部表占用的物理空间
    在微软中文技术论坛 CSDN cnblogs 三个微软社区中提问
    在内网服务器中获得真正的客户端ip的方法
    深拷贝的通用方法
    你知道在word中如何将段落标记替换成其他字符吗?
  • 原文地址:https://www.cnblogs.com/Blue233333/p/8206718.html
Copyright © 2011-2022 走看看