Processing math: 92%

[BZOJ 3622]已经没有什么好害怕的了

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

OI给了我足够的欢乐了,OI让我看到了新的世界,让我有了人生中最好的几位朋友,我没有什么可以遗憾的了……就算可能要面临最残酷的结局吧……

有点跑题了呢……还是说这个题吧

显然可以看出来这个题要求你的从大到小的匹配(姑且称之为好的匹配)恰好要有n+k2个,剩下的全都不是好的匹配。

首先把糖果(记为A)和药片(记为B)分别排序,对于每一个A中元素就很容易得到B中有多少比它小的。考虑设计状态f[i][j]表示对(排序后的)A的前i项,已经确定了的好的匹配有至少j个。这个DP转移显然。

然后发现f[n][j]×(nj)!就是对于所有元素的完美匹配中,有至少j个是好的匹配的方案数。这正是广义容斥原理的用武之地。考虑记tj=f[n][j]×(nj)!,那么答案就是(令n+k2=l):

\sum_{i = l}^n (-1)^{n - i}\binom{i}{l} t_i

代码: