給定 n 個數組成的乙個數列,規定有兩種操作,一是修改某個元素,二是求子數列 [a,b]的連續和。
輸入格式
第一行包含兩個整數 n和 m,分別表示數的個數和操作次數。
第二行包含 n個整數,表示完整數列。
接下來 m行,每行包含三個整數 k,a,b (k=0,表示求子數列[a,b]和;k=1,表示第 a 個數加 b)。
數列從 1開始計數。
輸出格式
輸出若干行數字,表示 k=0時,對應的子數列 [a,b]的連續和。
資料範圍
1≤n≤100000,1≤m≤100000,1≤a≤b≤n
輸入樣例:
10 5
1 2 3 4 5 6 7 8 9 10
1 1 5
0 1 3
0 4 8
1 7 5
0 4 8
輸出樣例:
1130
35ac**:
#include
const
int n=
100010
;//線段樹最多有4n個結點
int a[n]
,tree[
4*n]
;//用a[l]到a[r]為線段樹構建節點,父節點是node
void
build
(int node,
int l,
int r)
else
}//給a[idx]加上val
void
add(
int node,
int l,
int r,
int idx,
int val)
else
}//a,b是所求連續區間左右端點,l,r是當前查詢區間
intquery
(int node,
int l,
int r,
int a,
int b)
}int
main()
return0;
}//本模板記憶竅門:
//node l r必有,剩下兩個引數看情況
//mid left_node right_node必求
動態求連續區間和 線段樹 模板
給定 n 個數組成的乙個數列,規定有兩種操作,一是修改某個元素,二是求子數列 a,b 的連續和。輸入格式 第一行包含兩個整數 n和 m,分別表示數的個數和操作次數。第二行包含 n個整數,表示完整數列。接下來 m行,每行包含三個整數 k,a,b k 0,表示求子數列 a,b 的和 k 1,表示第 a ...
動態求連續區間和 樹狀陣列與線段樹
樹狀陣列,這玩意吧,我也整不明白具體的原理,說的好聽點就是注重實踐,說不好聽點就是揹著這幾個函式會寫就行了 給定 n 個數組成的乙個數列,規定有兩種操作,一是修改某個元素,二是求子數列 a,b 的連續和。輸入格式 第一行包含兩個整數 n 和 m,分別表示數的個數和操作次數。第二行包含 n 個整數,表...
線段樹維護連續區間
在抗日戰爭期間,華北平原廣大地區進行了大規模的隧道戰。一般來說,通過隧道連線的村莊排成一列。除了兩端,每個村莊都與兩個相鄰的村莊直接相連。入侵者經常對一些村莊發動襲擊並摧毀其中的部分隧道。八路軍指揮官要求最新的隧道和村莊連線狀態。如果某些村莊嚴重隔離,必須立即恢復連線!input 輸入的第一行包含兩...