[JSOI2011] 分特产

思路

按照一般逻辑来说这题得自己做了, trick 都见完了

转化题意,
对于 m 组物品, 每组物品有 ci 个, 考虑分配给 n 个人保证每个人至少有一个物品, 求分配方案的总数

首先简单的是不管每个人至少有一个物品, 直接随机分配, 显然的, 总共的可能性是 ni=1mci

这个可以容斥那些人没有物品, 但是你发现不能够状压 (即使能够状压, 也不好做, 因为没法求出「恰好」的方案数) , 那怎么办?

肯定要换实现方式了 (绝对不是因为我看到 lhs 使用了二项式反演)

你考虑令 f(k) 表示「至少」有 k 个人没有物品, g(k) 表示「恰好」有 k 个人没有物品

套路的(还是写一遍)

f(k)=i=kn(ik)g(i)g(k)=i=kn(1)ik(ik)f(i)

考虑计算 f

容易发现

f(k)=(nk)(nk)i=1mci

结束了


完蛋了跟 TJ 柿子不一样怎么办, 红温了

仔细一想发现上面的柿子 「確有問題」, 显然的会出现一些重复的情况计算, 因为对于单组物品本质不同

所以我们改一下, 用插板法处理

最终的答案为 (常用插板法)

f(k)=(nk)j=1m(cj+nk1nk1)

总结

善于转化问题

常见套路, 「钦定」意义下, 通过「至少」和「恰好」的转化来简化问题, f 可以用各种方法计算得来

慢慢的理解了这一类问题, 可以做一些简单题了!

相同本质的问题, 一定要考虑清楚组合数学怎么算是对的

posted @   Yorg  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示