P4859 已经没有什么好害怕的了

原题

很好的一道容斥题

我们如果想让ai>bi的个数比ai<bi的对数多K,这个限制是比较困难的。因为我们要同时考虑两种情况

但我们可以把原问题的限定设为ai>bi的对数为n+K2,做法就容易了很多。如果n+K是奇数,直接输出0即可

因此原问题变为了找一种配对方案,使得ai>bi的对数恰好为k

这个恰好的限制又过于严格,很明显不是我们想要的,因此我们考虑容斥原理。具体的,先求出fi表示满足条件的配对对数i的方案数,gi表示满足条件的配对对数=i的方案数

容易得到以下规律:

fi=j=in(ji)gj

其中(ji)我们从恰好对数=j的配对对数中选出i对来,剩下的当成随机匹配

根据二项式反演可得

gi=j=in(1)ji(ji)fj

最终答案就是gn+K2,因此我们只需要求fi的值即可,这是比较好求的

我们设dpi,j表示前i个数,钦定了j个满足ap>bp的方案数

容易得到递推式:

dpi,j=dpi1,j+(lsij+1)×dpi1,j1

最后容易直到fi=dpn,i×(ni)!,其中(ni)!表示未被匹配的随便分配的方案数

最终复杂度O(n2)

posted @   FOX_konata  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示