P3373 模板 線段樹 2

2021-10-25 03:01:55 字數 1483 閱讀 7854

n 寫一種資料結構,要求支援區間乘,區間加,區間求和

資料範圍:n,m

≤105

n,m\leq 10^5

n,m≤105so

luti

onsolution

soluti

on記住:每乙個乘操作都會影響和操作!每乙個乘操作都會影響和操作!每乙個乘操作都會影響和操作!

然後p us

hdow

npushdown

pushdo

wn的時候改一改就好了

時間複雜度:o((

n+m)

logn

)o((n+m)logn)

o((n+m

)log

n) cod

ecode

code

#include

#include

#include

#include

#define ll long long

#define n 100010

using

namespace std;

int n,mod,l,r,opt,m;

ll a[n]

,x;struct xds

inline

void

pushdown

(int k,

int l,

int r)

inline

void

modify_add

(int ql,

int qr,ll d,

int k=1,

int l=1,

int r=n)

inline

void

modify_mul

(int ql,

int qr,ll d,

int k=1,

int l=1,

int r=n)

inline ll query

(int ql,

int qr,

int k=1,

int l=1,

int r=n)

}t;inline ll read()

signed

main()

if(opt==2)

if(opt==3)

}}

P3373 模板 線段樹2

如題,已知乙個數列,你需要進行下面三種操作 1.將某區間每乙個數乘上x 2.將某區間每乙個數加上x 3.求出某區間每乙個數的和 include include using namespace std const int maxn 100005 int n,m,p long long arr maxn...

P3373 模板 線段樹 2

ac 這裡的延遲標記要開兩個,分別記錄加法的值和乘法的值,但是乘法和加法的優先順序不一樣,不規定他們的順序的話會有錯誤,所以可以規定乘法優先,即規定好該結點的值等於該節點的值 父節點的乘法延遲標記的值 父節點加法延遲標記的值 區間長度,即,sum num 2 sum num 2 add num wc...

P3373 模板 線段樹 2

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