专栏文章

广义二项级数还是太有用了

个人记录参与者 6已保存评论 6

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
6 条
当前快照
1 份
快照标识符
@mhz4t8s3
此快照首次捕获于
2025/11/15 01:28
3 个月前
此快照最后确认于
2025/12/02 00:08
3 个月前
查看原文
QOJ 3084:XXI Open Cup named after E.V. Pankratiev. Grand Prix of Tokyo C: Count Min Ratio
以此题为例,说明广义二项级数的一点应用。官方题解使用了组合意义,这里就用代数推导来做。
特别感谢 joke3579,本题的主要推导都是他做的。
(要不然我都忘了有广义二项级数这东西了!)

初步处理

首先我们容易列出一个暴力计算的式子:
ans=i=0Rj=0B(i+ji)(R+BijRi)min(ij,RiBj)\text{ans}=\sum_{i=0}^R \sum_{j=0}^B\binom{i+j}{i}\binom{R+B-i-j}{R-i}\min\left( \left \lfloor \frac{i}{j} \right \rfloor, \left \lfloor \frac{R-i}{B-j}\right \rfloor \right)
先不要急着把 min\min 分段,不妨枚举 dmind \leq \min
ans=i=0Rj=0B(i+ji)(R+BijRi)d1[dji][(Ri)(Bj)d]=d1j=0Bi=jdRd(Bj)(i+ji)(R+BijRi)=d1j=0Bi=0RdB(i+j(d+1)j)(R+B(i+dj)jBj)=d1j=0Bi=0RdB(i+j(d+1)j)((RdBi)+(d+1)(Bj)Bj)\begin{aligned}\text{ans}&=\sum_{i=0}^R \sum_{j=0}^B\binom{i+j}{i}\binom{R+B-i-j}{R-i} \sum_{d\geq 1} [dj \leq i][(R-i)\geq (B-j)d] \\ &=\sum_{d \geq 1} \sum_{j=0}^B \sum_{i=jd}^{R-d(B-j)}\binom{i+j}{i}\binom{R+B-i-j}{R-i} \\&=\sum_{d \geq 1}\sum_{j=0}^B \sum_{i=0}^{R-dB}\binom{i+j(d+1)}{j}\binom{R+B-(i+dj)-j}{B-j} \\ &= \sum_{d \geq 1}\sum_{j=0}^B \sum_{i=0}^{R-dB}\binom{i+j(d+1)}{j} \binom{(R-dB-i)+(d+1)(B-j)}{B-j}\end{aligned}

引入广义二项级数

广义二项级数是一类常数项为 11 的形式幂级数,定义如下:
Bt(z)=1+zBt(z)t\mathcal B_t(z)=1+z\mathcal B_t(z)^t
它有这样一个重要性质(证明参考 此文):
[zk]Bt(z)r1t+tBt(z)1=(tk+rk)[z^k]\frac{\mathcal B_t(z)^r}{1-t+t\mathcal B_t(z)^{-1}}=\binom{tk+r}{k}
结合此性质,答案可以表示为
d1j=0Bi=0RdB([zj]Bd+1(z)i1(d+1)+(d+1)Bd+1(z)1)([zBj]Bd+1(z)RdBi1(d+1)+(d+1)Bd+1(z)1)\sum_{d \geq 1}\sum_{j=0}^B \sum_{i=0}^{R-dB}\left( [z^j] \frac{\mathcal B_{d+1}(z)^i}{1-(d+1)+(d+1)\mathcal B_{d+1}(z)^{-1}}\right)\left( [z^{B-j}] \frac{\mathcal B_{d+1}(z)^{R-dB-i}}{1-(d+1)+(d+1)\mathcal B_{d+1}(z)^{-1}}\right)
=d1[zB]i=0RdBBd+1(z)RdB(1(d+1)+(d+1)Bd+1(z)1)2=\sum_{d \geq 1}[z^B]\sum_{i=0}^{R-dB} \frac{\mathcal B_{d+1}(z)^{R-dB}}{(1-(d+1)+(d+1)\mathcal B_{d+1}(z)^{-1})^2}
ii 被神奇地消掉了,让我们沿此方向继续推导。

Lagrange 反演收尾

现在我们知道答案为
ans=[zB]d=1R/B(RdB+1)Bd+1(z)RdB(1(d+1)+(d+1)Bd+1(z)1)2\text{ans}=[z^B] \sum_{d=1}^{\lfloor R/B \rfloor} \frac{(R-dB+1)\mathcal B_{d+1}(z)^{R-dB}}{(1-(d+1)+(d+1)\mathcal B_{d+1}(z)^{-1})^2}
使用另类 Lagrange 反演大力做一下,注意 Bt(z)\mathcal B_t(z) 的常数项为 11,套公式前需要将其常数项去掉:
ans=[zB]d=1R/B((RdB+1)(z+1)RdB(1(d+1)+(d+1)(z+1)1)2(Bd+1(z)1))=[zB]d=1R/B((RdB+1)(z+1)RdB(1(d+1)+(d+1)(z+1)1)21dz(1+z)d+2(1+z)(d+1)(B+1))\begin{aligned}\text{ans} &=[z^B] \sum_{d=1}^{\lfloor R/B \rfloor} \left(\frac{(R-dB+1)(z+1)^{R-dB}}{(1-(d+1)+(d+1)\mathcal (z+1)^{-1})^2}\circ (\mathcal B_{d+1}(z)-1) \right) \\ &=[z^B] \sum_{d=1}^{\lfloor R/B \rfloor} \left(\frac{(R-dB+1)(z+1)^{R-dB}}{(1-(d+1)+(d+1)\mathcal (z+1)^{-1})^2}\frac{1-dz}{(1+z)^{d+2}}(1+z)^{(d+1)(B+1)} \right)\end{aligned}
然后就是一通展开化简,虽然麻烦但并不难:
ans=[zB](1+z)R+B+1d=1R/BRdB+11dz\text{ans} =[z^B] (1+z)^{R+B+1} \sum_{d=1}^{\lfloor R/B \rfloor} \frac{R-dB+1}{1-dz}
最后和式的展开其实也容易计算:
d=1R/BRdB+11dz=i=0zid=1R/B(R+1)diBdi+1\sum_{d=1}^{\lfloor R/B \rfloor} \frac{R-dB+1}{1-dz}=\sum_{i=0}^\infty z^i\sum_{d=1}^{\lfloor R/B \rfloor}(R+1)d^i-B d^{i+1}
这就是自然数幂和,可以直接 Θ(BlogB)\Theta(B \log B) 处理。

评论

6 条评论,欢迎与作者交流。

正在加载评论...