n个小球放入m个盒子问题
(1)球 相同 也可以 不同
(2)盒 相同 也可以 不同
(3)盒 为空 也可以 不空
合计\(2\times2\times2=8\)种模型。
1、球相同,盒不同,盒不空
相当于把n个相同小球分成m份,用插板法,在n个小球中间的n-1个空中,插入m-1个板子隔开。
答案为\(\large C_{n-1}^{m-1}\)。
2、球相同,盒不同,盒能空
在第1类情况下继续分析,我们可以先假设m个盒子里都放好了1个球,所以说白了就是,现在有m+n个相同的球,要放入m个不同的箱子,没有空箱。也就是第1种情,最后在从每个盒子里拿走1个小球。
答案为\(\large C_{n+m-1}^{m-1}\)。
3、球不同,盒相同,盒不空
题目链接:P2028 龙兄摘苹果
题目链接:P1655 小朋友的球
设\(dp[n][m]\)表示n个不同小球放入m个相同盒子且盒不能为空的方案总数。
情况一:如果\(n<m\) 则 \(dp[n][m]=0\)
情况二:如果\(n>=m\)则继续分析,由于小球不同故可以分步解决故考虑最后一个小球所放情况不同,共计两种情况。
(1)最后一个小球单独放入一个盒子,则前n-1个小球就放入m-1个盒子,方案总数为\(dp[n-1][m-1]\)
(2)最后一个小球与其他球放一起,因为球已经放入盒子,虽然盒子相同但球不同则选择放入的盒子也不同,故有m种放法。再考虑前n-1个小球放入m个盒子的方案 \(dp[n-1][m]\) ,方案总数为 \(m\times dp[n-1][m]\)。
边界条件 \(dp[n][m]=1(m=1,n\ge1)\) 表示有球但只有1个盒子时,只有1种方案。
答案为 第二类斯特林数 :
\(dp[n][m] = \begin{cases}0 & m>n\\1 & m=1,n\ge 1 \\m\times dp[n-1][m]+dp[n-1][m-1] & m\le n \end{cases}\)
为方便计算后面的问题,设第3类问题答案为 \(s[n][m]\)。
4、球不同,盒相同,盒能空
选出1,2,……,n-1个盒子为空,视做不同方案,这样就和第3类问题相同。
设\(B[n][m]\)表示n个不同小球放入m个相同盒子且盒能为空的方案总数。
答案为贝尔数:
\(B[n][m]=s[n][1]+s[n][m]+……+s[n][m]=\sum\limits_{i=1}^m s[n][i]\)
5、球不同,盒不同,盒不空
题目链接:P1287 盒子与球
我们可以用捆绑法将一些小球捆绑成一个小球,这道题可以等价为从n个小球中选出n−m+1个小球合并成一个大球,合并后为m-1个小球和1个大球共m个球,然后求m个球一共有多少种排列。
答案:\(C^{n-m+1}_n\times A^m_m\)
6、球不同,盒不同,盒能空
从小球的角度考虑,n个小球都有m种选择,故答案为: \(m^n\)
7、球相同,盒相同,盒能空
题目链接:P2386 放苹果
设\(dp[n][m]\)表示n个相同小球放入m个相同盒子且盒能为空的方案总数。
若n<m 则 dp[n][m]=dp[n][n],因为盒子相同故,问题可以拿走m-n个盒子。
由于球相同,故不能对球进行分步考虑,考虑盒子是否存在空盒子的情况。
(1)盒子不为空,则可以将m个盒子中都先放一个小球,问题就转换为了n-m个小球放入m个盒子中的方案数,dp[n][m]=dp[n-m][m]。
(2)盒子存在空,可以拿走一个盒子作为空盒子,问题就转换为了n个小球放入m-1个盒子的方案数,dp[n][m]=d[n][m-1]。
边界条件为n=0或者m=1时,没有球或者只有1个盒子时都只有1种方案。
\(dp[n][m] = \begin{cases}1 & m=1||n==0\\dp[n][n] & n<m \\dp[n-m][m]+dp[n][m-1] & m\le n \end{cases}\)
为方便后面使用设该方案数为 \(D[n][m]\)
8、球相同,盒相同,盒不空
题目链接:P1025 [NOIP2001 提高组] 数的划分
设\(dp[n][m]\)表示n个相同小球放入m个相同盒子且盒不能为空的方案总数。
若 n<m 则 dp[n][m]=0 因为无法保证盒子不空
若 n>=m 可以将每个盒子中都放入一个小球,这样该问题就转换为第7类问题,允许为空的情况,\(dp[n][m]=D[n-m][m]\)。
\(dp[n][m] = \begin{cases}0 & n<m\\D[n-m][m] & n\ge m \end{cases}\)
Ps: 扩展题目
题目链接:P5824 十二重计数法