1. 球相同,盒不同,无空盒
因为球是相同的,所以我们只需要把球挨个放在一排进行选择就行了
我们发现,如果我们在某两个元素中间放一块板子来将其隔开:
这样一来,我们塞一个板子就可以得到 222 个集合,要有 mmm 个集合,就需要塞 m−1m-1m−1 个板子 ,而在 nnn 的元素只有 n−1n-1n−1 个空隙拿来塞板子,所以原问题转化为:求在 n−1n-1n−1 个位置中塞 m−1m-1m−1 个板子的组合数(因为盒子相同,所以是组合数),即 Cn−1m−1C_{n-1}^{m-1}Cn−1m−1
2. 球相同,盒不同,可空盒
基本思想与球相同,盒不同,无空盒
情况相同,但是比较抽象:我们需要一种空球
就是这个样子:
假设有 mmm 个盒子,我们就再另外准备 mmm 个空球,这样,就可以出现空盒的情况(在一个盒子里只塞空球)。
这样一来,问题就成了:
有 n+mn+mn+m 个相同的球和 mmm 个不同的盒子,在无空盒的情况下,有几种放法?
问题就成了球相同,盒不同,无空盒
,套公式,最终答案为 Cn+m−1m−1C_{n+m-1}^{m-1}Cn+m−1m−1
3. 球不同,盒相同,无空盒
对于这种问题,和第二类斯特林数有着很大的关系。因为第二类斯特林数就是求这种问题的方案总数
这里,我们采用dp来解决这一类问题
定义状态:
dp[i][j]
表示前 iii 个球放入 jjj 个盒子的方案总数(这里注意一个细节:由于盒子是相同的,所以,定义状态的描述是放入j个盒子
,而不是放入前j个盒子
)
先给状态转移方程式:
dp[ i ][ j ]=dp[ i−1 ][ j−1 ]+j×dp[ i−1 ][ j ]dp[\ i\ ][\ j\ ]=dp[\ i-1\ ][\ j-1\ ]+j\times dp[\ i-1\ ][\ j\ ]dp[ i ][ j ]=dp[ i−1 ][ j−1 ]+j×dp[ i−1 ][ j ]
解释一下:
假设我们当前要放入 iii 号球,那么,有两种放入方法
- 这个球单独占了一个盒子
- 这个球与前 i−1i-1i−1 个球共占 jjj 个盒子
对于情况 111,其对应的结果就是dp[i-1][j-1]
对于情况 222,其对应的结果就是j*dp[i-1][j]
为什么要*j
呢?由于球是不相同的,而且有 jjj 个盒子可供选择,所以,根据乘法原理,我们需要*j
最终答案存储在dp[n][m]
4. 球不同,盒相同,可空盒
与球不同,盒相同,无空盒
基本类似,但是,由于可空盒,这就意味着,无论你是放 111 个盒子还是 222 个盒子,都是合法的,所以,在 球不同,盒相同,无空盒
的dp基础上,最终答案为:∑i=1mdp[ n ][ i ]\sum\limits_{i=1}^mdp[\ n\ ][\ i\ ]i=1∑mdp[ n ][ i ]
5. 球不同,盒不同,无空盒
我们来回忆一下球不同,盒相同,无空盒
的情况
思考:如果我们先把小球放进盒子之后,在对盒子进行一个全排列的排序,那么,在盒相同
的情况下,这样是没有意义的,因为这样的到的答案本质上是相同的,但是,在盒不同
的情况下,这样得到的答案本质上是不同的(因为盒子排序的过程就相当于把盒子内的小球进行集体迁移,由于盒不同,所以得到的方法必然是不同的)
那么,在 球不同,盒相同,无空盒
的dp基础上,最终答案为:dp[n][m]*(m!)
6. 球不同,盒不同,可空盒
这东西就是一个㵘淼沝水
由于球和盒子都是不同的,还允许空盒,所以,直接一个乘法原理,就得到了答案:mnm^nmn
7. 球相同,盒相同,无空盒
由于盒相同,所以,我们就假设左边的盒子里的球一定小于等于右边盒子里的球
就是这样:
考虑dp
定义状态:
dp[n][m]
表示将 nnn 个球放入 mmm 个盒子里的方案总数
由于不能有空盒存在,所以,我们可以先给每一个盒子放一个球
此时,我们还剩下 n−mn-mn−m 个球
剩下的球我们只能放在前 i(1≤i≤m)i(1\le i\le m)i(1≤i≤m) 个盒子里(为了保证先前的假设成立),相当于dp[n-m][i]
综上,得到了状态转移方程式:
dp[ i ][ j ]=∑k=1jdp[ i−j ][ k ]dp[\ i\ ][\ j\ ]=\sum\limits_{k=1}^jdp[\ i-j\ ][\ k\ ]dp[ i ][ j ]=k=1∑jdp[ i−j ][ k ]
边界比较复杂:
dp[ i ][ j ]={1j=1 or i=j0i<jdp[\ i\ ][\ j\ ]=\begin{cases}1&j=1\ \operatorname{or}\ i=j\\0&i<j\end{cases}dp[ i ][ j ]={10j=1 or i=ji<j
最终答案为dp[n][m]
8. 球相同,盒相同,可空盒
和球相同,盒相同,无空盒
的情况类似,但是,需要借鉴一下球相同,盒不同,可空盒
的空球思想
我们在另外准备 mmm 个空球,和原有的 nnn 个球放在一起
这样,问题就变成了球相同,盒相同,无空盒
,在原dp基础上,最终答案为dp[n+m][m]