盒球问题

发布时间 2023-07-06 12:01:31作者: Moyyer_suiy

n 个球 和 m 个盒子相关问题的个人理解。


 

1.球不同盒不同,可空。

n 个都能放到 m 个里:$m^n$

2.球同盒同,可空。

分类讨论。类似于 dp,设 $f[i][j]$ 表示 i 个球放到 j 个盒里方案数。

$n < m:f(n, m) = f(n, n)$

$n >= m:$
有空的:$f(n, m) = f(n, m - 1)$,m - 1 就是让盒子有空。因为递推中每次都会考虑,所以每种空的情况都会统计。

没有空的:$f(n, m) = f(n - m, m)$,就是让 m 个盒子都先放上一个球,这样就能保证不空。

$f(n, m) = f(n, m - 1) + f(n - m, m)$

3.球同盒同不空。

$n < m$ 无解。

否则:$f'(n, m) = f(n - m, m)$。 其中 $f$ 含义同 2 中含义(可空),$f'$ 在这里指本题式子(不可空)。表示:每个盒子先填一个球,对于剩下的球可以有空,直接根据 2 的解法塞到盒子里就行。

紧扣 dp 定义的含义,子问题和原问题性质是否一样?不要弄混。

4.球同盒不同,不空。

插板法:$C_{n - 1}^{m - 1}$

怎么保证答案正确?

要求不空:则板只能在 n - 1 个空中。

分成 m 份:在空中塞 m - 1 个板。易证。

5.球同盒不同,可空。

发现和上面问题的区别在于多了可以为空的条件。

那么先放 m 个球,保证每个空都有球。然后根据上面的结论,处理 n + m 个球放到 m 个盒子里,不能有空。

$C_{n + m - 1} ^ {m - 1}$

6.球不同盒同,不空。

递推。第一个:开一个盒子;第二个:开一个盒子 or 和 1 放在一起;第三个:开一个盒子 or 和 2 放在一起 or 和 1、2放在一起。

....

所以它和别人共用一盒:$f(n, m) = f(n - 1, m) * m$,乘上 m 是因为,虽然盒同但是球不同。在前面有 m 种盒。

它自己开了一新盒:$f(n, m) = f(n - 1, m - 1)$

综上:$f(n,m) = f(n - 1, m) * m + f(n - 1, m - 1)$

补充:在后面。

7.球不同盒同,可空。

考虑以盒子为整体,看盒子:空 1 个,空 2 个,空 ... m - 1 个。

然后枚举非空盒子(直接把空盒子摘出去了),把球放过去。

另 $f'(n, m)$ 表示球不同盒同,可空时的方案数。下面式子中的 $f(n, m)$ 含义同 6 中含义。

根据 6 易得:$f'(n, m) = \sum_{i = 1}^m f(n, i)$。表示枚举非空盒子个数,然后按照 6 处理。

8.球不同盒不同,可空。

和 7 的区别在于盒不同。

那就将 7 的答案乘上盒子的全排列,相当于全排一遍,其他均相同。

另 f''表示球不同盒不同可空的方案数,f''的含义于 7 中相同。

$f''(n, m) = f'(n, m) \times m!$

 


6 中球不同盒同不空的递推式正是第二类斯特林数。

关于斯特林数,传送门。

 


并不能想出来其他上面方案....几乎是想出来一个很快就被自己否掉了。我觉得以上应该算这种问题的通解,感觉无论是思路上还是复杂度上大概率都不会有更优的了()。