CTS2019 珍珠[生成函数]

先考虑 \(m\) 会带来什么限制。

\[\sum_{i=1}^D [{cnt_i \over 2}] \geq m\\\sum_{i=1}^D {cnt_i - cnt_i \& 1 \over 2} \geq m\\\sum_{i=1}^D cnt_i - \sum_{i=1}^D {cnt_i \& 1} \geq 2m\\\sum_{i=1}^D cnt_i \& 1 \leq n - 2m \]

也就是出现次数为奇数的数不超过 \(n-2m\) 个。

这样就意味着出现次数为偶数的数不小于 \(k\) 个。

那就设 \(f_i\) 表示大力硬点 \(i\) 个数出现次数为偶数,其余随便选的方案数。

\[f_i = {D \choose i } n![x^n]({e^x + e^{-x} \over 2})^i e ^{(D-i)x} \]

一通大力操作,可以得到

\[f_i = {D \choose i}{i! \over 2^i} \sum_{j=0}^i {(D-2j)^n \over j!}{1 \over (i-j)!} \]

右边已经是一个卷积的式子了。

然后考虑 \(g_i\) 表示恰好 \(k\) 个偶数的方案数。

\[f_i = \sum_{j=i} {j \choose i } g_j \]

由二项式反演

\[g_i = \sum_{j=i} (-1)^{j-i}{j \choose i} f_j \]

然后就没了,好耶。

代码不想写。

posted @ 2022-02-11 15:33  ZSH_ZSH  阅读(51)  评论(0)    收藏  举报