P3374 模板 樹狀陣列 1

2022-09-18 00:21:15 字數 1013 閱讀 8861

如題,已知乙個數列,你需要進行下面兩種操作:

1.將某乙個數加上x

2.求出某區間每乙個數的和

第一行包含兩個整數n、m,分別表示該數列數字的個數和操作的總個數。

第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。

接下來m行每行包含3個整數,表示乙個操作,具體如下:

操作1: 格式:1 x k 含義:將第x個數加上k

操作2: 格式:2 x y 含義:輸出區間[x,y]內每個數的和

輸出包含若干行整數,即為所有操作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

時空限制:1000ms,128m

資料規模:

對於30%的資料:n<=8,m<=10

對於70%的資料:n<=10000,m<=10000

對於100%的資料:n<=500000,m<=500000

樣例說明:

故輸出結果14、16

#include#include#include#include#include#includeusing namespace std;

int n,m,a,xx,yy;

int c[500000],tree[500000];

int lowbit(int t)

int getsum(int x)

return ans;

}void add(int x,int y)

}int main()

while(m--)

if(a==2)

} return 0;

}

P3374 模板 樹狀陣列 1

如題,已知乙個數列,你需要進行下面兩種操作 1.將某乙個數加上x 2.求出某區間每乙個數的和 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含3個整數,表示乙個操作,具體如下 操作1 ...

P3374 模板 樹狀陣列 1 題解

同步 原題鏈結 給定乙個長度為 n nn 的陣列,q qq 組操作 顯然,假設你現在什麼也不會。我們只考慮第 2 22 個操作,即先不考慮修改,如何處理區間和的詢問?顯然,對於初始的陣列 a ia i ai 只需要做乙個字首和 s ss 使得 s j i 1 ja is j sum j a i sj...

題解 P3374 模板 樹狀陣列 1

最簡單的zkw線段樹就十分適合這道題,為什麼用zkw線段樹,可以看一下以下精簡 我們只需要用到單點修改,區間查詢就好了。include define go i,j,n,k for int i j i n i k define fo i,j,n,k for int i j i n i k define...