1. 程式人生 > >關於樹狀數組的區間修改和單點查詢

關於樹狀數組的區間修改和單點查詢

地址 src 區間修改 r+ 寫在前面 mar article .net 操作

寫在前面

之前一直不知道樹狀數組可以支持區間修改,所以寫一篇博客記錄一下。

首先給個小栗子:

如下圖:

技術分享圖片

利用差分的思路,就得到下圖:

技術分享圖片

那麽如果我們要求將2~4的所有元素+2呢?我們就可以得到下圖:

技術分享圖片

可以發現,差分的第二項和第五項一個加了2,一個減了2,所以對於每次區間[l,r]操作,我們只需要在l和r+1的位置加、減操作值即可,證明也很簡單,首先操作區間內的數的差肯定不會變,所以區間內的一段相同,因為第一項增加了一個值k,所以他與前面一項的差就增加了k,最後一項增加了k,最後一項的後一項與最後一項的差就減小了k,所以最後變化的就只有l和r+1位置的數,單點查詢就只需要求前綴和即可。

--------------------- 本文來自 G21GLF 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/g21glf/article/details/82969676?utm_source=copy

關於樹狀數組的區間修改和單點查詢