• 斯特林数简单入门


    真的是入门……

    第一类斯特林数

    ({nrack m}) 表示 (n) 个不同的数分成 (m) 个非空圆排列的方案数。

    递推:({nrack m} = {n-1rack m-1} + (n-1){n-1rack m})

    从组合意义的角度考虑,第 (n) 个数可以单独新成为一个原排列,或者插入到前 (n-1) 个数的前面。

    边界条件:({nrack 0} = [n=0])

    第二类斯特林数

    ({nrace m}) 表示 (n) 个不同的小球放入 (m) 个相同的盒子中的方案数。

    递推:({nrace m} = {n-1race m-1} + m{n-1race m})

    还是从组合意义的角度考虑,这里就不说了。

    边界条件:({nrace 0} = [n=0])

    应用

    下降幂:(x^{underline n} = frac{x!}{(x-n)!})

    上升幂:(x^{overline n} = frac{(x+n-1)!}{(x-1)!})

    一个柿子:(inom{n}{k} imes k^{underline m} = inom{n-m}{k-m} imes n^{underline m})

    例题:[省选联考 2020 A 卷] 组合数问题 题解


    [m^n = sumlimits_{i=0}^{min(n,m)} inom{m}{i}{nrace i}i! ]

    上面这个式子很重要,务必要记住。


    [sumlimits_{i=0}^n inom{i}{j} = inom{n+1}{j+1} ]

    上式中,(j) 是一个已知的数。从组合意义的角度考虑,前 (i) 个物品中取 (j) 个物品就相当于从 (n+1) 个物品中选 (j+1) 个物品,这是一种快速求一行组合数的方法。

    注意:组合数推式子的过程中尽量把所有的阶乘拆开,把能化简的尽量化简。也可以采用交换求和顺序的方法。


    自然数幂和:求 (sumlimits_{i=0}^n i^k),其中 (k) 较小,(n) 较大。

    [egin{aligned} sumlimits_{i=0}^n i^k &= sumlimits_{i=0}^nsumlimits_{j=0}^k inom{i}{j}{krace j}j! \ &= sumlimits_{j=0}^k {krace j} j! sumlimits_{i=0}^n inom{i}{j} \ &= sumlimits_{j=0}^k {krace j} j! inom{n+1}{j+1} \ &= sumlimits_{j=0}^k {krace j} j! frac{(n+1)!}{(j+1)!(n-j)!} \ &= sumlimits_{j=0}^k {krace j} frac{(n+1)^{underline{j+1}}}{j+1} end{aligned}]


    CF932E Team Work

    (sumlimits_{i=1}^n inom{n}{i}i^k),其中 (k) 较小,(n) 较大。

    [egin{aligned} sumlimits_{i=1}^n inom{n}{i}i^k &= sumlimits_{i=0}^n inom{n}{i}sumlimits_{j=0}^k inom{i}{j}{krace j}j! \ &= sumlimits_{j=0}^k {krace j} j! sumlimits_{i=0}^n inom{n}{i}inom{i}{j} \ &= sumlimits_{j=0}^k {krace j} j! sumlimits_{i=0}^n frac{n!}{i!(n-i)!} imes frac{i!}{j!(i-j)!} \ &= sumlimits_{j=0}^k {krace j} sumlimits_{i=0}^n frac{n!}{(n-i)!(i-j)!} \ &= sumlimits_{j=0}^k {krace j} sumlimits_{i=0}^n frac{n!(n-j)!}{(n-i)!(i-j)!(n-j)!} \ &= sumlimits_{j=0}^k {krace j} frac{n!}{(n-j)!} sumlimits_{i=0}^n frac{(n-j)!}{(n-i)!(i-j)!} \ &= sumlimits_{j=0}^k {krace j} frac{n!}{(n-j)!}sumlimits_{i=0}^n inom{n-j}{n-i} \ &= sumlimits_{j=0}^k {krace j} frac{n!}{(n-j)!}2^{n-j} end{aligned}]

    然后发现这个东西可以 (mathcal{O}(k^2)) 计算,这道题就做完了。

  • 相关阅读:
    使用paramiko的问题记录
    python常见异常及解决方法
    linux ps -aux各列含义
    常用技能
    超时程序管理
    跨年的总结和展望
    java json和对象互转
    一些常用功能总结
    ResultSet转成java类对象
    python常用功能总结
  • 原文地址:https://www.cnblogs.com/xsl19/p/13513272.html
Copyright © 2020-2023  润新知