P3372 模板 線段樹 1

2022-04-12 03:20:45 字數 1286 閱讀 3106

非常正規的板子題了可以說

首先安利乙個線段樹入門的部落格  %大佬

題解

注意幾個點就好啦

(1)懶標記 add[ ],陣列一定要開的大一點 

字首和 sum[ ],陣列一定要開的大一點,還要開long long 

(2)build 建樹函式:樹 k ,邊界 l ~ r 

(3)add 加數函式:樹 k ,邊界 l ~ r ,區間加 p

(4)pushdown 標記下傳函式:樹 k ,邊界 l ~ r ,中間 mid 

(5)modify 區間加數函式:樹 k ,邊界 l ~ r ,詢問區間 x ~ y ,區間加數 v 

(6)quety 區間查詢函式:樹 k ,邊界 l ~ r ,詢問區間 x ~ y

**

#includeusing

namespace

std;

const

int maxn=1e5+10

;int

n,m,x,y,v,opr;

int a[maxn],add[maxn*4

];long

long sum[maxn*4

];long

long

ans;

inline

intread()

void build(int k,int l,intr)

int mid=(l+r)>>1

; build(k

<<1

,l,mid);

build(k

<<1|1,mid+1

,r);

sum[k]=sum[k<<1]+sum[k<<1|1];}

void add(int k,int l,int r,int

p)void pushdown(int k,int l,int r,int

mid)

void modify(int k,int l,int r,int x,int y,int

v)long

long query(int k,int l,int r,int x,int

y)int

main()

if(opr==2

)

}return0;

}

P3372 模板 線段樹 1

線段樹學習 這個題來看,線段樹分為建樹,更新,查詢。1.建樹 void build ll p,ll l,ll r ll mid l r 1 build lson p l,mid build rson p mid 1,r push up sum p void push up sum ll p 這段 的...

P3372 模板 線段樹 1

題 include includeusing namespace std typedef long long ll ll n,m,ans,x,y,op,val 因為下面有的函式需要用到x,y,val值,懶得傳參,故直接寫為全域性變數 const int n 100000 struct nodetre...

P3372 模板 線段樹 1

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