「Algorithm」放球问题
Posted at 19-8-22 15:42, Updated at 19-11-8 20:03
继续填小学没学好的坑
都高二了还这么菜...
Content
个球,放到个盒子里(),主要有下列八种情况:
序号 | 个球是否有区别 | 个盒子是否有区别 | 是否允许空盒 |
---|---|---|---|
1 | 否 | 否 | 否 |
2 | 否 | 否 | 是 |
3 | 否 | 是 | 否 |
4 | 否 | 是 | 是 |
5 | 是 | 否 | 否 |
6 | 是 | 否 | 是 |
7 | 是 | 是 | 否 |
8 | 是 | 是 | 是 |
一、球相同,盒子相同,不允许空盒
要保证盒子大小非严格递减。每次把当前所有盒子里的球都;或者新增一个盒子,里面放一个球
设表示答案,那么
另外,也可以从允许空盒的方案(
情况2
)推出:每个盒子里都先铺一个球,即
二、球相同,盒子相同,允许空盒
设表示答案,那么
(因为新增的盒子可以为空了)
与(
情况1
)的关系:
三、球相同,盒子不同,不允许空盒
插板法,总共个间隔,插个板子
答案即为
四、球相同,盒子不同,允许空盒
可以看作,先在最后添上个球,总共个球,往里插个板子,然后从这部分中每部分拿掉一个球,就变成了这种情况
答案是
或者直接从代数角度
答案等于
根据杨辉三角某一列的前缀和,就等于最下面那个位置右下角的值,即
如何从
情况4
推情况3
?允许空盒的方案是个球插个板子。在每个盒子里先铺一个球,那么只剩个球了。插个板子的方案数就是
五、球不同,盒子相同,不允许空盒
第二类斯特林数
考虑第个球
- 若前个球形成了个集合,那么第个球必须新开一个集合。因为盒子没有顺序(或者说一开始已经固定了顺序),所以不用乘
- 若前个球已经形成了个集合,那第个球可以插到其中任意一个中。因为第个球是独一无二的,所以要乘
六、球不同,盒子相同,允许空盒
答案就是
七、球不同,盒子不同,不允许空盒
答案就是
因为情况5
中的每一种方案,任意两个集合交换后形成的方案一定与本身不同(若球都一样的话就不一定了,详见下文)
八、球不同,盒子不同,允许空盒
答案就是
- 与
情况7
关系:
枚举空盒数量,是个经典的式子
Summary
什么东西是无标号的,那么就可以给它随便钦定一种顺序,形象地理解就是把它固定不动,再考虑另一个东西
例如:
情况1、2
相当于先把球固定,考虑盒子的过程中盒子的顺序也是固定的(保证非严格递减)情况3、4
相当于把球固定,考虑盒子如何摆情况5、6
相当于把盒子的顺序固定,依次考虑每个球放到哪个盒子里
Q. 为什么
5
到7
可以直接乘,而1
到3
不行?A. 因为盒子是否有区别,不仅取决于是否有标号,还与集合大小有关!
例如,在球不同,盒子不同的情况下,与是不同的。但若球不同,这两种情况都是,没有区别。这里需要注意