小球与盒子

题目描述

前言

首先感谢 \(wqy\)\(2018\) 年初赛之前出这道题目来帮助我们提高组合数学的能力。 虽然我当时太菜,并没有去做

前置知识

组合数和排列数的公式以及原理和简单乘法原理,所以请提前百度。

要用到的公式:

\[A_n^r=\frac{n!}{(n-r)!} \]

\[C_{n}^{m}=\frac{n !}{m !(n-m) !} \]

需要注意的是,排列数与组合数的区别就是选出来的元素是否可以区分。

思路

比较简单的都是带 \(C\) 限制的,所以我们先看带 \(C\) 限制的。

LUC和UUC

观察 \(LUC\)\(UUC\) 因为盒子是没有区别的,所以一个球无论放在哪个盒子里都一样,所以只有两种情况, \(n>m\) 显然是 \(0\) ,否则就是 \(1\)

ULC

我们发现盒子是有标号的,而球是没有标号的,所以放在所有的球放的盒子不同结果肯定不一样,所以就是相当于给你 \(m\) 个盒子,让选 \(n\) 个放球,答案就是 \(C_m^n\)

LLC

我们可以发现现在球也有标号,就相当于再求组合数的时候要求选出来的也是有序的,这就是排列数,所以答案就是 \(A_m^n\)

LLA

再看一种比较简单的情况, \(LLA\) 的答案直接就是 \(m^n\) ,就相当于你第一个球有 \(m\) 种放法,第二个也是如此,一共有 \(n\) 个球,就是 \(n\)\(m\) 相乘,所以答案就是 \(m^n\)

还有几种用组合数学可以解决的情况。

ULB

盒子是有标号的,而且每一个盒子都要有一个球,所以可以用插板法,就是相当于在 \(m\) 个球的 \(m-1\) 个空隙里,加入 \(n-1\) 个板,分为 \(n\) 个集合。所以答案就是 \(C_{n-1}^{m-1}\)

为什么 \(ULB\) 可以用插板法来解决呢??

首先,使用插板法,要插板的东西必须是没有区别的,因为插板法只能控制两个板中东西的数量,如果两个板中间的东西有标号的话,显然会算少。

但是如果选出来的集合再没有标号的话,也是错误的。

因为 \((1,2)\)\((2,1)\) 被当成两种情况去计算了,而如果选出来的集合再没有标号的话,这就是一种情况。

ULA

这个看起来和上面的 \(ULB\) 毫无关联,其实这个是可以转化为 \(ULB\) 的情况,可以先将每一个盒子都先放上一个球,然后就成了 \(ULB\) ,答案是 \(C_{n+m-1}^{m-1}\)

下面的几种情况都是需要用 \(DP\) 来解决的。

前三个问题是用第二类斯特林数来解决的。

第二类斯特林数(简称为 \(S_2\))的定义为将 \(n\) 个物体划分成 \(k\) 个非空的没有区别的集合的方法数,大致就是把 \(n\) 个不同的小球放入 \(m\) 个相同的盒子中(且盒子不能为空)的方案数。递推公式为

\(S_2[i][j]=S_2[i-1][j] * j+S_2[i-1][j-1]\)\(S_2[i][j]\) 表示将前 \(i\) 个小球放在前 \(j\) 个盒子里的方案数)

第一个转移是在前面的 \(j\) 个盒子里任意找一个盒子放上这个球,第二个转移是找一个新盒子来放这个球。

UUB

根据上面第二类斯特林数的定义,所以 \(UUB\) 就是 \(S_2[n][m]\)

ULB

我们发现 \(ULB\) 只是将没有去区别的盒子变成了有区别的,所以我们只需要在 \(S_2[n][m]\) 的基础上乘上 \(m!\) 就可以了。就是相当于盒子有 \(m!\) 种放置方法,然后每种都有 \(S_2[n][m]\) 种可能性。

ULA

因为盒子在 \(UUB\) 的状态下是无序的,所以哪个盒子为空没有区别,我们直接枚举有几个盒子不放就可以了,答案就是

\[\sum_{i=1}^{m} S_2[n][i] \]

UUB

直接在 \(ULB\) 的基础上除一个 \(m!\) 是错误的。

我们考虑 \(DP\) ,设 \(P[i][j]\) 表示将 \(i\) 个球放在 \(j\) 个盒子里,所有盒子都不为空的方案数。

\[P[i][j]=P[i-1][j-1]+P[i-j][j] \]

第一个转移表示新开一个盒子去放当前这个球,第二个表示在每一个盒子里都放上一个球。

其实这个有一个名字叫划分数,所以答案就是 \(P[n][m]\)

UUA

这个也可以和上面 \(ULB\)\(ULA\) 一样,在每个盒子里先都先放上一个球,然后答案就是 \(P[n+m][m]\)

posted @ 2019-10-12 18:13  准点的星辰  阅读(253)  评论(0编辑  收藏  举报