如題,已知乙個數列,你需要進行下面兩種操作:
第一行包含兩個正整數 n,m,分別表示該數列數字的個數和操作的總個數。
第二行包含 n 個用空格分隔的整數,其中第 i 個數字表示數列第 i 項的初始值。
接下來 m 行每行包含 3 個整數,表示乙個操作,具體如下:
輸出包含若干行整數,即為所有操作 2 的結果。
輸入 #1
5 5
1 5 4 2 3
1 1 3
2 2 5
1 3 -1
1 4 2
2 1 4
輸出 #1
14
16
【資料範圍】
對於 30% 的資料,1≤n≤8,1≤m≤10;
對於 70% 的資料,1≤n,m≤10^4;
對於 100% 的資料,1≤n,m≤5×10^5。
樣例說明:
故輸出結果14、16
#include using namespace std;
#define maxn 500020
int read()
int n, m;
int a[maxn] = ;
void add(int pos, int val)
}int sum(int pos)
return sum;
}int main()
for (int i = 1, x, y, z; i <= m; i++)
return 0;
}
洛谷P3374 模板 樹狀陣列1
如題,已知乙個數列,你需要進行下面兩種操作 1.將某乙個數加上x 2.求出某區間每乙個數的和第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含3或4個整數,表示乙個操作,具體如下 操作1 格式 1...
洛谷P3374 模板 樹狀陣列 1
題目描述 如題,已知乙個數列,你需要進行下面兩種操作 1.將某乙個數加上x 2.求出某區間每乙個數的和 輸入輸出格式 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含3或4個整數,表示...
洛谷 P3374 樹狀陣列 模板1
樹狀陣列是將每個元素加到他後面的元素上,每次向後走lowbit x 位,樹狀陣列中存的是該位之前的字首和,所以求某個區間和時只需要將區間兩個端點的字首和相減即可,但是如果直接暴力求字首和一定會t,所以要引入乙個新東西 lowbit 引用大佬的話 我先說個叫lowbit的東西,lowbit k 就是把...