组合数前缀和
上指标:\(\sum\limits_{i=m}^n \dbinom{i}{m}=\dbinom{n+1}{m+1}\)
下指标:\(\sum\limits_{i=0}^m \dbinom{n}{i}\)
记 \(f(n, m) = \sum\limits_{i=0}^m \dbinom{n}{i}\)
目前没有公式,可以考虑以下做法:
莫队
记 \(f(n, m) = \sum\limits_{i=0}^m \dbinom{n}{i}\)
\(m\) 的变化可以通过 \(\pm\) 一个组合数求出,\(n\) 的变化考虑 \(\dbinom{n}{m}=\dbinom{n-1}{m}+\dbinom{n-1}{m-1}\)。
时间复杂度 \(\mathcal{O}(n\sqrt q)\)。
djq 分治
不会 poly,鸽。
Lucas 定理
下面的 \(/\) 默认是向下取整的。
\[\sum\limits_{i=0}^m \dbinom{n}{i}
\]
\[=\sum\limits_{i=0}^m \dbinom{n/p}{i/p}\dbinom{n \bmod p}{i \bmod p}$$$$=\sum\limits_{j=0}^{p-1}\dbinom{n \bmod p}{j} \sum\limits_{i=0}^m [i \bmod p = j]\dbinom{n/p}{i/p}
\]
\[=\sum\limits_{j=0}^{p-1}\dbinom{n \bmod p}{j} \sum\limits_{i=0}^{(m-j)/p} \dbinom{n/p}{i}
\]
\[=\sum\limits_{j=0}^{p-1}\dbinom{n \bmod p}{j}f(n/p, (k-j)/p)
\]
对于 \((k - j) / p\) 显然只有两种取值:\(k/p\) 和 \(k/p - 1\)。当 \(j \in [0, k\bmod p]\) 时是 \(k/p\),否则是 \(k/p-1\),那么前面就是
\[=\sum\limits_{j=0}^{p-1}\dbinom{n \bmod p}{j}f(n/p, k/p-1)+\dbinom{n/p}{k/p}\sum\limits_{j=0}^{k \bmod p}\dbinom{n \bmod p}{j}
\]
\[=f(n\bmod p, p - 1)f(n/p, k/p - 1) + \dbinom{n/p}{k/p}f(n\bmod p, k\bmod p)
\]
\(f(n/p, k/p - 1)\) 递归计算,\(\dbinom{n/p}{k/p}\) 用 Lucas 定理预处理即可。时间复杂度 \(\mathcal{O}(p^2) \sim \mathcal{O}(\log_p^2 n)\)。

浙公网安备 33010602011771号