同步
原題鏈結
前置知識:
樹狀陣列的單點修改與區間詢問。
簡要題意:維護陣列的區間修改與單點詢問。
同樣類似的,我們用樹狀陣列進行操作,對每個區間修改,本質上是對差分陣列的字首和的維護,而字首和的維護我們需要用到樹狀陣列。
樹狀陣列以常數小,空間小比線段樹好用,好寫(但是功能沒有線段樹多)。
所以對每個區間 [l,
r]
[l,r]
[l,r
] ,更新 l
ll 和 r+1
r+1r+
1 的差分值即可。
時間複雜度:o(n
logn)
−o
(logn
)\mathcal(n \log n) - \mathcal(\log n)
o(nlogn)
−o(logn)
.實際得分:100pt
s100pts
100pts
.
#pragma gcc optimize(2)
#include
using
namespace std;
const
int n=
1e6+1;
typedef
long
long ll;
inline
intread()
int x=0;
while
(ch>=
'0'&& ch<=
'9') x=
(x<<3)
+(x<<1)
+ch-
'0',ch=
getchar()
;return x*f;
}int a[n]
; ll c[n]
;int n,m,x,y;
inline
intlowbit
(int x)
inline ll sum
(int x)
return s;
}inline
void
update
(int x,
int k)
}int
main()
while
(m--
)else
}return0;
}
P3368 模板 樹狀陣列 2 題解
csdn同步 原題鏈結 前置知識 樹狀陣列的單點修改與區間詢問。簡要題意 維護陣列的區間修改與單點詢問。同樣類似的,我們用樹狀陣列進行操作,對每個區間修改,本質上是對差分陣列的字首和的維護,而字首和的維護我們需要用到樹狀陣列。樹狀陣列以常數小,空間小比線段樹好用,好寫 但是功能沒有線段樹多 所以對每...
P3368 模板 樹狀陣列 2
題目描述 如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的值 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含2或4個整數,表示乙個操作,具...
P3368 模板 樹狀陣列 2
題目傳送門 p3368 模板 樹狀陣列 2 給你乙個長度為n的陣列 操作 1 格式 1 x y k 含義 將區間 x,y x,y x,y 內每個數加上 kkk 操作 2 格式 2 x 含義 輸出第 x xx 個數的值。區間更新,單點查詢的樹狀陣列 include include include in...