一维树状数组
· 单点修改 + 单点查询:
直接使用即可
· 区间修改 + 单点查询:
另外维护一个维护前缀和的树状数组,查询时查询与原值相加即可。
· 区间修改 + 区间查询:
若要查询区间$[1, R]$的区间和,可推公式,其中$D[i]$表示差分数组:
$\sum\limits_{i=1}^R \sum\limits_{j=1}^i D[j]$
$= \sum\limits_{i=1}^R (R - i + 1) * D[i]$
$= (x + 1) \sum\limits_{i=1}^R D[i] - \sum\limits_{i=1}^R (i - D[i])$