盒球问题
n 个球 和 m 个盒子相关问题的个人理解。
1.球不同盒不同,可空。
n 个都能放到 m 个里:
2.球同盒同,可空。
分类讨论。类似于 dp,设
有空的:
没有空的:
3.球同盒同,不空。
否则:
紧扣 dp 定义的含义,子问题和原问题性质是否一样?不要弄混。
4.球同盒不同,不空。
插板法:
怎么保证答案正确?
要求不空:则板只能在 n - 1 个空中。
分成 m 份:在空中塞 m - 1 个板。易证。
5.球同盒不同,可空。
发现和上面问题的区别在于多了可以为空的条件。
那么先放 m 个球,保证每个空都有球。然后根据上面的结论,处理 n + m 个球放到 m 个盒子里,不能有空。
6.球不同盒同,不空。
递推。第一个:开一个盒子;第二个:开一个盒子 or 和 1 放在一起;第三个:开一个盒子 or 和 2 放在一起 or 和 1、2放在一起。
....
所以它和别人共用一盒:
它自己开了一新盒:
综上:
补充:递推式正是第二类斯特林数。
7.球不同盒同,可空。
考虑以盒子为整体,看盒子:空 1 个,空 2 个,空 ... m - 1 个。
然后枚举非空盒子(直接把空盒子摘出去了),把球放过去。
另
根据 6 易得:
8.球不同盒不同,可空。
和 7 的区别在于盒不同。
那就将 7 的答案乘上盒子的全排列,相当于全排一遍,其他均相同。
另 f''表示球不同盒不同可空的方案数,f''的含义于 7 中相同。
并不能想出来其他上面方案....几乎是想出来一个很快就被自己否掉了。我觉得以上应该算这种问题的通解,感觉无论是思路上还是复杂度上大概率都不会有更优的了()。
本文作者:Moyyer_suiy
本文链接:https://www.cnblogs.com/Moyyer-suiy/p/17531793.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步