參考部落格
持續更新。。。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-xhrgdjcd-1613976863463)(
區間儲存在陣列中的下標對應為
12 3
4 5 6 7
8 9 10 11 12 13 14 15
四部分單點更新:
根據題目的要求編寫自己的pushup,query
這種問題的實質就是每次遞迴更新兩個子節點,然後呼叫pushup更新父節點。
int a[50000<<2];
void pushup(int rt)
void build(int l,int r,int rt)
int m=(l+r)>>1;
build(l,m,rt<<1);
build(m+1,r,rt<<1|1);
pushup(rt);
}void update(int l,int r, int rt,int poi,int add)
int m=(l+r)>>1;
if(poi<=m) update(l,m,rt<<1,poi,add);
if(poi>m) update(m+1,r,rt<<1|1,poi,add);
pushup(rt);
}ll query(int l,int r,int rt,int l,int r)
void pushdown(int rt,int m)
}void build(int l,int r,int rt)
int m=(l+r)>>1;
build(l,m,rt<<1);
build(m+1,r,rt<<1|1);
pushup(rt);
}void update(int l,int r, int rt,int l,int r,int c)
pushdown(rt,r-l+1);
int m=(l+r)>>1;
if(l<=m) update(l,m,rt<<1,l,r,c);
if(r>m) update(m+1,r,rt<<1|1,l,r,c);
pushup(rt);
}ll query(int l,int r,int rt,int l,int r)
線段樹模板
include include include using namespace std const int size 10010 struct node the node of line tree class linetree void updatem void updateline public ...
線段樹模板
單點更新,區間求最值 include include include include include define n 222222 using namespace std int num n struct tree tree n 4 void push up int root void build...
線段樹模板
下面的兩份線段樹模板,乙份是單點更新維護區間最小值,乙份是區間更新,同時維護區間和,區間最大最小值。如下 線段樹單點更新 include include include include using namespace std define maxn 1000 define inf 0x3f3f3f3...