组合数学入门

真的是入门……

第一类斯特林数

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

递推:\({n\brack m} = {n-1\brack m-1} + (n-1){n-1\brack m}\)

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

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

第二类斯特林数

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

递推:\({n\brace m} = {n-1\brace m-1} + m{n-1\brace m}\)

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

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

应用

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

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


\[m^n = \sum\limits_{i=0}^{\min(n,m)} \binom{m}{i}{n\brace i}i! \]

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


\[\sum\limits_{i=0}^n \binom{i}{j} = \binom{n+1}{j+1} \]

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

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


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

\[\begin{aligned} \sum\limits_{i=0}^n i^k &= \sum\limits_{i=0}^n\sum\limits_{j=0}^k \binom{i}{j}{k\brace j}j! \\ &= \sum\limits_{j=0}^k {k\brace j} j! \sum\limits_{i=0}^n \binom{i}{j} \\ &= \sum\limits_{j=0}^k {k\brace j} j! \binom{n+1}{j+1} \\ &= \sum\limits_{j=0}^k {k\brace j} j! \frac{(n+1)!}{(j+1)!(n-j)!} \\ &= \sum\limits_{j=0}^k {k\brace j} \frac{(n+1)^{\underline{j+1}}}{j+1} \end{aligned}\]


CF932E Team Work

\(\sum\limits_{i=1}^n \binom{n}{i}i^k\),其中 \(k\) 较小,\(n\) 较大。

\[\begin{aligned} \sum\limits_{i=1}^n \binom{n}{i}i^k &= \sum\limits_{i=0}^n \binom{n}{i}\sum\limits_{j=0}^k \binom{i}{j}{k\brace j}j! \\ &= \sum\limits_{j=0}^k {k\brace j} j! \sum\limits_{i=0}^n \binom{n}{i}\binom{i}{j} \\ &= \sum\limits_{j=0}^k {k\brace j} j! \sum\limits_{i=0}^n \frac{n!}{i!(n-i)!} \times \frac{i!}{j!(i-j)!} \\ &= \sum\limits_{j=0}^k {k\brace j} \sum\limits_{i=0}^n \frac{n!}{(n-i)!(i-j)!} \\ &= \sum\limits_{j=0}^k {k\brace j} \sum\limits_{i=0}^n \frac{n!(n-j)!}{(n-i)!(i-j)!(n-j)!} \\ &= \sum\limits_{j=0}^k {k\brace j} \frac{n!}{(n-j)!} \sum\limits_{i=0}^n \frac{(n-j)!}{(n-i)!(i-j)!} \\ &= \sum\limits_{j=0}^k {k\brace j} \frac{n!}{(n-j)!}\sum\limits_{i=0}^n \binom{n-j}{n-i} \\ &= \sum\limits_{j=0}^k {k\brace j} \frac{n!}{(n-j)!}2^{n-j} \end{aligned}\]

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

你可能感兴趣的:(组合数学入门)