輸入乙個長度為 n
'>n
n 的整數序列。
接下來輸入 m
'>m
m 個操作,每個操作包含三個整數 l,r
,c'>l,r,c
l,r,c,表示將序列中 [l,
r]'>[l,r]
[l,r] 之間的每個數加上 c
'>c
c。請你輸出進行完所有操作後的序列。
輸入格式
第一行包含兩個整數 n
'>n
n 和 m
'>m
m。第二行包含 n
'>n
n 個整數,表示整數序列。
接下來 m
'>m
m 行,每行包含三個整數 l,r
,c'>l,r,c
l,r,c,表示乙個操作。
輸出格式
共一行,包含 n
'>n
n 個整數,表示最終序列。
資料範圍1≤
n,m≤
100000
'>1≤n,m≤100000
1≤n,m≤100000,1≤
l≤r≤
n'>1≤l≤r≤n
1≤l≤r≤n,
−1000≤c
≤1000
'>−1000≤c≤1000
−1000≤c≤1000,
−1000≤整
數序列中
元素的值
≤1000
'>−1000≤整數序列中元素的值≤10001≤
n,m≤
100000
'>1≤l
≤r≤n
'>−
1000≤c
≤1000
'>−
1000≤整
數序列中
元素的值
≤1000
'>**:
#includeusing
namespace
std;
const
int n =100010
; int
a[n],b[n];
void insert(int l,int r,int
c )int
main()
for(int i=1;i<=n;i++)
b[i]+=b[i-1];//
將b陣列更新為自身的字首和陣列
for(int i=1;i<=n;i++)
cout
<"";
return0;
}
差分 差分陣列 樹狀差分
原陣列 ai94 759差分陣列 bi9 5 3 24差分陣列的字首和94 759顯然通過求字首和可以做到單點查詢 他高效的地方在於區間修改,比如我們對區間 2,4 每個元素加上5,我們只需在差分陣列 b2 5,b5 5,然後求字首和即可 原陣列 ai94 759差分陣列 bi 903 2 1 差分...
差分陣列的總結
差分陣列的資料網上不太好找,蒟蒻表示網上學習這個自認為比較簡單的技巧是比較麻煩的,於是蒟蒻覺得自己寫下學習總結。部落格上看拉個題目意思大概是 給定乙個長度為n的序列 首先進行x次操作,每次操作在li和ri這個區間加上乙個數ci。然後進行y次詢問,每次詢問li到ri的區間和。初始序列都為0。1 n 1...
洛谷模板,樹狀陣列二 差分
先介紹下差分 設陣列a 那麼差分陣列b 也就是說b i a i a i 1 a 0 0 那麼a i b 1 b i 這個很好證的 假如區間 2,4 都加上2的話 a陣列變為a b陣列變為b 發現了沒有,b陣列只有b 2 和b 5 變了,因為區間 2,4 是同時加上2的,所以在區間內b i b i 1...