QOJ 3084:XXI Open Cup named after E.V. Pankratiev. Grand Prix of Tokyo C: Count Min Ratio
以此题为例,说明广义二项级数的一点应用。官方题解使用了组合意义,这里就用代数推导来做。
特别感谢
joke3579,本题的主要推导都是他做的。
(要不然我都忘了有广义二项级数这东西了!)
初步处理
首先我们容易列出一个暴力计算的式子:
ans=∑i=0R∑j=0B(ii+j)(R−iR+B−i−j)min(⌊ji⌋,⌊B−jR−i⌋)
先不要急着把
min 分段,不妨枚举
d≤min:
ans=i=0∑Rj=0∑B(ii+j)(R−iR+B−i−j)d≥1∑[dj≤i][(R−i)≥(B−j)d]=d≥1∑j=0∑Bi=jd∑R−d(B−j)(ii+j)(R−iR+B−i−j)=d≥1∑j=0∑Bi=0∑R−dB(ji+j(d+1))(B−jR+B−(i+dj)−j)=d≥1∑j=0∑Bi=0∑R−dB(ji+j(d+1))(B−j(R−dB−i)+(d+1)(B−j))
引入广义二项级数
广义二项级数是一类常数项为
1 的形式幂级数,定义如下:
Bt(z)=1+zBt(z)t
它有这样一个重要性质(证明参考
此文):
[zk]1−t+tBt(z)−1Bt(z)r=(ktk+r)
结合此性质,答案可以表示为
∑d≥1∑j=0B∑i=0R−dB([zj]1−(d+1)+(d+1)Bd+1(z)−1Bd+1(z)i)([zB−j]1−(d+1)+(d+1)Bd+1(z)−1Bd+1(z)R−dB−i)
=∑d≥1[zB]∑i=0R−dB(1−(d+1)+(d+1)Bd+1(z)−1)2Bd+1(z)R−dB
Lagrange 反演收尾
现在我们知道答案为
ans=[zB]∑d=1⌊R/B⌋(1−(d+1)+(d+1)Bd+1(z)−1)2(R−dB+1)Bd+1(z)R−dB
使用另类 Lagrange 反演大力做一下,注意
Bt(z) 的常数项为
1,套公式前需要将其常数项去掉:
ans=[zB]d=1∑⌊R/B⌋((1−(d+1)+(d+1)(z+1)−1)2(R−dB+1)(z+1)R−dB∘(Bd+1(z)−1))=[zB]d=1∑⌊R/B⌋((1−(d+1)+(d+1)(z+1)−1)2(R−dB+1)(z+1)R−dB(1+z)d+21−dz(1+z)(d+1)(B+1))
然后就是一通展开化简,虽然麻烦但并不难:
ans=[zB](1+z)R+B+1∑d=1⌊R/B⌋1−dzR−dB+1
最后和式的展开其实也容易计算:
∑d=1⌊R/B⌋1−dzR−dB+1=∑i=0∞zi∑d=1⌊R/B⌋(R+1)di−Bdi+1
这就是自然数幂和,可以直接
Θ(BlogB) 处理。