现在我们开始进入著名的盒子与球问题,来练一练你的排列组合能力。
我们考虑插板法,可以看成将一个不同的序列分成 r r r 段,则我们需要 r − 1 r-1 r−1 个板子,并且供板子插的位置有 n − 1 n-1 n−1 个,我们可以得到最终方案为 c n − 1 r − 1 c_{n-1}^{r-1} cn−1r−1。
可以发现,此题与上题的不同之处在于它允许有空盒子。所以,我们可以把这 r r r 个板子当做空球放进去,即只装一个样,而非真正的球。则此时,我们在用 r − 1 r-1 r−1 个板子去插,便包含了空盒子的情况。最终方案数: C n + r − 1 r − 1 C_{n+r-1}^{r-1} Cn+r−1r−1。
此时,我们考虑递推。
我们定义 d p i j dp_{ij} dpij 对应题意,并且这一类神奇的递推又被称作第二类斯特林数。
假设你现在正在放第 i i i 个球,有两种情况:单独拿一个盒子装或者随便挑一个盒子放进去。
对于第一种,答案为 d p i − 1 , j − 1 dp_{i-1,j-1} dpi−1,j−1。
对于第二种,答案为 j × d p i − 1 , j j \times dp_{i-1,j} j×dpi−1,j。
所以 d p i , j = d p i − 1 , j − 1 + j × d p i − 1 , j dp_{i,j} = dp_{i-1,j-1}+j \times dp_{i-1,j} dpi,j=dpi−1,j−1+j×dpi−1,j
特殊情况:只有一个盒子时答案为 1 1 1,球数小于盒子数时答案为 0 0 0。
此题跟上题相像,只不过允许了空盒子。我们直接枚举最后有多少个空盒子即可。
最终方案: ∑ i = 1 n d p n , i \sum\limits_{i=1}^n dp_{n,i} i=1∑ndpn,i
读完题目,发现与第三题仍然很像,只不过盒子从相同变成了不同,所以我们直接在最后乘上 m m m 个盒子的排列即可。
最终方案数: m ! × d p n , r m!\times dp_{n,r} m!×dpn,r。
我们可以这样看这个问题:对于每一个球,我们都有 r r r 个盒子留给它放,所以最终答案: r n r^n rn。
我们再次考虑递推。
我们定义 d p i , j dp_{i,j} dpi,j 表示将 i i i 个小球放入 j j j 个盒子里…(此处省略。)
为了保证没有空盒,我们先往每一个盒子里放一个球。
剩下的我们想第四题一样思考,枚举使用盒子数量。
答案为 ∑ i = 1 n d p n − m , i \sum\limits_{i=1}^{n} dp_{n-m,i} i=1∑ndpn−m,i。
特殊情况:当只有一个盒子或球数等于盒子数时,答案为 1 1 1;当球数小于盒子数时,答案为 0 0 0。
我们以第二题和第七题的思路进行思考
考虑转化:先借 m m m 个球铺满每个盒子,求完答案后再把球还回去。
最终答案为 d p n + m , n dp_{n+m,n} dpn+m,n