【计数专题】划分计数

来做点计数

把 n 个相同的球划分到 k 个相同的集合(可以为空)

即分拆数 \(p_{n,k}\) https://oi-wiki.org/math/combinatorics/partition/

递推式:

\[p_{n,k} = p_{n-k, k}+p_{n-1,k-1} \]

考虑每次增加一个集合,或者把存在的集合都加入一个球

生成函数:

\[F(x,y)=\prod_i \sum_j x^{ij}y^{j} = \prod_{i} \frac{1}{1-x^iy} \]

枚举大小为 \(i\) 的集合的个球。

组合数学里也讲过,可以去看一眼。

把 n 个相同的球划分到 k 个互不相同的集合(可以为空):

\[\sum_{i=0}^k x_i = n \]

自然数解的个数。

加强版隔板法,具体来说就是提前加几个进去

\[\binom{n+k-1}{k-1} \]

生成函数是(多此一举

\[F_k(x)=\prod_{i=1}^{k}\sum_{j} x^j = \prod_{i=1}^{k}\frac{1}{1-x} =\frac{1}{(1-x)^k} \]

\[F(x,y)=\prod\frac{y}{1-x} \]

即每个考虑每个集合放多少个球。

\[F_k(x)=\sum_{i} \binom{i+k-1}{k-1} x^i \]

把 n 个互不相同的球划分到 k 个相同的集合(可以为空):

枚举多少个集合有数,转化成第二类斯特林数行的前缀和。

\[\sum_{i=1}^{k}{n \brace i} \]

把 n 个互不相同的球划分到 k 个互不相同的集合(可以为空):

最简单的

\[k^n \]

考虑每个数放进哪个集合。

把 n 个相同的球划分到 k 个相同的集合(不能为空):

分拆数。

考虑先在每个集合里面放一个数。

答案等于 \(p_{n-k,k}\)

把 n 个相同的球划分到 k 个互不相同的集合(不能为空):

\[\sum_{i=0}^k x_i = n \]

的正整数解的个球。

直接隔板法

\[\binom{n-1}{k-1} \]

生成函数:

\[F_k(x)=\frac{x^k}{(1-x)^k} \]

\[F(x,y)=\prod\frac{xy}{1-x} \]

与上面同理,即每个集合放多少个球,但是限制必须放一个。

把 n 个互不相同的球划分到 k 个相同的集合(不能为空):

第二类斯特林数

\[n \brace k \]

递推式:

\[{n\brace k} = {{n - 1}\brace{k - 1}} + k{{n - 1}\brace{k}} \]

考虑最后一个数装哪个集合,要么新开一个,要么和之前的装一个集合,因为之前的集合内的数互不相同,所以每个集合都是一种选择。

把 n 个互不相同的球划分到 k 个互不相同的集合(不能为空):

只能容斥

枚举空的集合的个数,然后再钦定空的集合,再乱放球。

\[\sum_{i=0}^{k} (-1)^i\binom{k}{i} (k-i)^n \]

艹,没想到早有这个了
https://www.luogu.com.cn/problem/P5824

posted on 2025-01-09 16:42  Evan_song  阅读(30)  评论(0)    收藏  举报