【计数专题】划分计数
来做点计数
把 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
浙公网安备 33010602011771号