雑用 1

区间加法可以差分的原因是 \(\Delta_i = \Delta_{i-1}\),所以令 \(\textit{d}_i = \Delta_i-\Delta_{i-1}\),对于一个一般点的 \(\Delta_i = f(\{\Delta_1, \dots, \Delta_{i-1}\})\),我们可以令 \(\textit{d}_i = \Delta_i-f(\{\Delta_1, \dots, \Delta_{i-1}\})\)

这得出了广义一点的差分。那么前缀和的方式即 \(\textit{d}_i \gets d_i+f(\{d, \dots, d_{i-1}\})\)(其实这里的 \(f\) 改为下标的函数可能更准确一点)。

举个例子,对区间 \([l, r]\) 中的 \(i \in [l, r]\) 操作 \(a_i \gets a_i+f_{i-l+1}\),其中 \(f\) 是 Fibonacci 数列,也就是说 \(f_i = f_{i-1}+f_{i-2}\),差分数组即 \(d_i = a_i-a_{i-1}-a_{i-2}\),操作即 \(d_l \gets d_l+1\)\(d_{r+1} \gets d_{r+1}+f_{r-l+2}\)\(d_{r+2} \gets d_{r+2}+f_{r-l+1}\),前缀和方法即 \(d_i \gets d_i+d_{i-1}+d_{i-2}\)

差分是导函数的一个演绎,即令研究范围中的 \(\epsilon = 1\) 而得来的(在实数中令 \(\epsilon = \lim\limits_{\frac{1}{x} \rightarrow +\infty}x\) 做差分即可得到导函数)。

posted @ 2022-07-22 20:55  cirnovsky  阅读(30)  评论(1编辑  收藏  举报