十二重计数法
个球, 个盒子,求在一定限制条件下把小球放入盒子的方案数。
1. 球之间互相区分,盒子之间互相区分。
每个球能放 个盒子,显然是:
2. 球之间互相区分,盒子之间互相区分,每个盒子至多放一个球。
先选出装了球的盒子,然后排列球的顺序。
答案为:
3. 球之间互相区分,盒子之间互相区分,每个盒子至少放一个球。
容斥,答案为:
4. 球之间不互相区分,盒子之间互相区分。
插板,答案为:
5. 球之间不互相区分,盒子之间互相区分,每个盒子至多放一个球。
答案为:
6. 球之间不互相区分,盒子之间互相区分,每个盒子至少放一个球。
可以先每个盒子都放一个,然后就变成了 4.。
答案为:
7. 球之间互相区分,盒子之间不互相区分。
发现每个盒子只由它装了哪些球来区分,没有装球的盒子是没有区别的。
所以可以先枚举装了球的盒子数,答案就是斯特林子集数的行前缀和:
8. 球之间互相区分,盒子之间不互相区分,每个盒子至多放一个球。
显然答案为:
9. 球之间互相区分,盒子之间不互相区分,每个盒子至少放一个球。
斯特林子集数,答案为:
10. 球之间不互相区分,盒子之间不互相区分。
分拆数。
转置一下,问题就从 有 个盒子,每个盒子中放任意个球 变成了 有任意个非空盒子,每个盒子可以放至多 个球。
所以答案为:
可以通过先 再 的方式快速求出。
11. 球之间不互相区分,盒子之间不互相区分,每个盒子至多放一个球。
答案为:
12. 球之间不互相区分,盒子之间不互相区分,每个盒子至少放一个球。
每个盒子先放一个球后就变成了 10.。
答案为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步