fif_ifi 等于前面至多 kkk 项之和:fi=∑j=1kfi−jf_i=\sum_{j=1}^{k}f_{i-j}fi=∑j=1kfi−j,越界项忽略,且 f0=1f_0=1f0=1。若每次重新求和会达到 O(nk)O(nk)O(nk)。维护变量 window 表示当前所需区间和:加入新算出的 fif_ifi,并在窗口超过 kkk 项时减去 fi−kf_{i-k}fi−k。时间复杂度 O(n)O(n)O(n),空间复杂度 O(n)O(n)O(n)。减法后要加模数防止负数。
window
使用您的 星源智一OJ 通用账户