P5824 十二重计数法
solution
有
case 1
球不同,盒不同
答案为
case 2
球不同,盒不同,一个盒子内至多一个球
若
否则,第一个球有
case 3
球不同,盒不同,盒子至少一个球。
设
则
二项式反演得
答案即为
case 4
球不同,盒相同
相当于把
先考虑恰有
因为集合互不区分,所以
那么这个 case 的答案就是
设
由
NTT 即可求出所有
case 5
球不同,盒相同,盒内至多放一个球
若
否则,答案为 1。
case 6
球不同,盒相同,盒内至少放一个球
答案就是 case 4 中的
case 7
球全部相同,盒子不同。
插板可知答案为
case 8
球全部相同,盒子不同,盒内至多一个球
相当于从
答案为
case 9
球全部相同,盒子不同,盒内至少一个球
插板,
case 10
设
枚举有几个盒子是空的,然后剩下的盒子都至少有一个小球,将每个盒子内的小球数量减 1,就变成了一个子问题。
即
下一步怎么做?一个有趣的办法是注意到
用
把
把递归式展开得
考虑如何计算
设
则
由于
所以
可以发现,在
然后对
case 11
球相同,盒子相同,每个盒子至多装一个球
显然,答案同 case 5
case 12
球相同,盒子相同,每个盒子至少装一个球。
用类似 case 10 的方式考虑。
设
将所有盒子的球数减 1,接着枚举有几个空盒子,然后剩余部分就变成子问题了。
即
同样地用做差的方式得出,
我们惊奇的发现,这个式子和 case 10 的极为相似。
事实上,用同样的放法计算可以发现,本 case 最终的多项式只比 case 10 多乘了一个
于是就做完啦。
code
hint
我做这个题并不是按 1 ~ 12 的顺序的。
可以优先做 6,12 再做 3,4,10。
之前没见过分拆数,做了一上午
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】