小球放盒子 (组合数总结)

对于小球放盒子问题,可分为以下的八种情况。

\(1、\)盒子相同,球相同,不允许空。

  这个其实就相当于整数划分问题,就是把球看做数字,把盒子看做每一份。设\(f[i][j]\)为考虑了前\(i\)个,分成了\(j\)份,转移方程为:

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

\(2、\)盒子相同,球相同,允许空。

  这个东西就是刚刚求的那个整数划分的前缀和。

\(3、\)盒子相同,球不同,不允许空。

  第二类斯特林数,设\(f[i][j]\)表示处理了前\(i\)个球 ,用了\(j\)个盒子,转移方程为:

\[f[i][j]=f[i-1][j-1]+f[i-1][j]*j \]

  这个东西的含义就是讨论当前新加入的球要放哪,第一种放法就是再开一个盒子:\(f[i][j]+=f[i-1][j-1]\),第二种方法就是在前面的\(j\)个盒子里随便挑一个放进去,因为有\(j\)个盒子,所以\(f[i][j]+=f[i-1][j]*j\)

\(4、\)盒子相同,球不同,允许空。

  第二类斯特林数的前缀和。其实就是看最后放了几个盒子,剩下的都是空的,加起来即可。

\(5、\)盒子不同,球相同,不允许空。

  比较经典的隔板法,把\(m\)盒子看做\(m-1\)个木板,然后要插入到\(n-1\)个空隙里,所以答案就是\(\large C_{n-1}^{m-1}\)

\(6、\)盒子不同,球相同,允许空。

  这个就是上一个的变形,可以添加\(m\)个小球放到这\(m\)个盒子里,这样就保证了盒子非空,答案就是\(\large C_{n+m-1}^{m-1}\)

\(7、\)盒子不同,球不同,不允许空。

  这个是第二类斯特林数\(*m!\),具体怎么证明不太会,好像就是把斯特林数换一种写法 ,然后消掉有序性。

\(8、\)盒子不同,球不同,允许空。

  对于每一个小球都可以放到\(m\)个盒子里,答案就是\(m^n\)

posted @ 2018-10-23 19:53  Monster_Qi  阅读(3946)  评论(3编辑  收藏  举报