洛谷 P3372 模板 線段樹 1

2021-10-10 08:13:34 字數 1330 閱讀 1913

洛谷 p3372 【模板】線段樹 1

題目描述

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

將某區間每乙個數加上 k。

求出某區間每乙個數的和。

輸入格式

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

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

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

1 x y k:將區間 [x, y] 內每個數加上 k。

2 x y:輸出區間 [x, y] 內每個數的和。

輸出格式

輸出包含若干行整數,即為所有操作 2 的結果。

輸入輸出樣例

輸入5 5

1 5 4 2 3

2 2 4

1 2 3 2

2 3 4

1 1 5 1

2 1 4

輸出11820

ac**:

#include

#include

using

namespace std;

int ql,qr;

long

long x,temp[

100005

],a[

100005*4

],ad[

100005*4

];void

build

(int o,

int l,

int r)

}//建線段樹

long

long

query

(int o,

int l,

int r,

long

long d)

}//查詢

void

update

(int o,

int l,

int r)

int m=

(l+r)/2

;int ls=

2*o,rs=

2*o+1;

if(ql<=m)

update

(ls,l,m);if

(mupdate

(rs,m+

1,r)

; a[o]

=a[ls]

+a[rs]

+ad[o]

*(r-l+1)

;}//對指定區間內所有數進行修改

intmain()

else

if(s==1)

}return0;

}

洛谷 P3372 線段樹 模板1

模板一是區間加修改和區間和 例題 如下 include includeusing namespace std struct tree int rt 1,cnt 2 int n,i,m const int maxa 100000 tree tree maxa 1 結構體模擬線段樹 long long ...

洛谷 P3372 模板 線段樹 1

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

洛谷 P3372 模板 線段樹 1

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