Gravatar
op_组撒头屯
积分:2982
提交:327 / 662

Pro3918  梦现时刻

偶然看到的神秘题,感觉有点意思。

首先考虑式子的组合意义,可以理解为共有 $n$ 个球,可以从前 $b$ 个中选任意个涂白,再在剩下的球中选 $a$ 个涂黑的方案数。

考虑转而枚举前 $b$ 个球中涂黑的数量,得到

$f_{a,b}=\sum_{i=0}^b{2^{b-i}C_b^iC_{n-b}^{a-i}}$

注意到这个式子很能卷积,考虑将 $b$ 固定,设 $F_b(x)=\sum{f_{a,b}x^a}$,得到

$F_b=(2+x)^b(1+x)^{n-b}$

此时枚举 $b$ 并动态维护多项式已经可以做了,类似背包和退背包。时间复杂度 $O(m^2)$。


实际上可以直接推出 $f_{a,b}$ 的递推式。考虑

$F_b(x)'=b(2+x)^{b-1}(1+x)^{n-b}+(n-b)(2+x)^b(1+x)^{n-b-1}$

$\quad\quad\;\;\,=bF_{b-1}(x)\frac{1}{1+x}+(n-b)F_b(x)\frac{1}{1+x}$

于是

$(1+x)F_b(x)'=bF_{b-1}(x)+(n-b)F_b(x)$

提取系数即得

$(a+1)f_{a+1,b}+af_{a,b}=bf_{a,b-1}+(n-b)f_{a,b}$

整理一下

$f_{a+1,b}=\frac{1}{a+1}(bf_{a,b-1}+(n-a-b)f_{a,b})$

预处理逆元直接递推,时间复杂度 $O(m^2)$。

“超级无敌神仙炫酷无敌原神大王”豪华套餐特邀嘉宾。


2023-10-10 20:24:35    
我有话要说
暂无人分享评论!