差分(無需考慮差分陣列構造的模板)

2022-09-19 11:00:14 字數 1277 閱讀 5957

輸入乙個長度為 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...