我要解决的问题是当l, r, k
的值被赋予M
次时,找到下面公式的值。
r
Σ [ Ai × (i-l+1)^k ]
i=l
范围是:1 ≤ l ≤ r ≤ N
,0 ≤ k ≤ 10
,1 ≤ N, M ≤ 10 ^ 5
。
我想知道在时限为2秒时如何解决此问题。
答案 0 :(得分:2)
为清楚起见,重新编写公式:
定义和计算查找表 B
,如下所示:
使用二项式定理扩展(i - l + 1)^k
项,其中(k, j)
是Binomial coefficient:
因此,该查找表可用于在 S(l, r, k)
时间复杂度下计算O(k)
的每个值。比天真算法的 O(r - l) = O(N)
好得多!
通过替换索引稍微重写上面的公式,以使求和更简单:
如果您需要,我会提供代码,但我强烈建议您尝试首先自己实现。