无空插板
给你n个球和m个桶,要求你将这n个球全部放入m个桶中,不允许出现空桶。问你有多少种放的方法。
就相当于,把这n个球列出来,然后在这n个球之间的n-1个空中,插入m-1个板子。如此下来就可以把这n个球分成m份。因此,我们可以知道答案应该为 Cm−1n−1 C n − 1 m − 1 。
有空插板
如果我们允许出现空桶呢。
考虑一下,我们会发现在出现空桶时,就会有两个板子放在同一个空中,为了更改成上一个情景同样适用的情况,我们不妨在这些板子之间再放一个球。则答案为 Cm−1n+m−1 C n + m − 1 m − 1
大于等于限制下的插板
我们增加条件,对于一些箱子的球的个数要大于或等于ki个。
先把大于ki转化成大于ki-1。然后是同样的思考方式,我们不妨先从n个球中拿出ki-1个球,然后再将剩下的球自由分配,不允许出现空盒,最后分配完之后再将开始拿出来的球放回去对应的桶中,就可以保证满足限制条件了。
答案为
Cmn−∑ki
C
n
−
∑
k
i
m
小于等于限制下的插板
增加条件,对于一些箱子的球的个数要小于或等于ki个。
考虑只有一个箱子内球数要小于等于ki限制条件的情况,那么我们可以取其补集,即此箱子内球数大于ki个的情况,那么就可以转化为我们对上一种情况的讨论,全集为无限制条件的答案,减一下即可得到答案。
这个时候我们再来考虑有多个箱子有限制条件的情况,用容斥乱搞一通即可。