線段樹模板

2021-09-26 23:11:55 字數 1133 閱讀 1967

線段樹的模板

#include using namespace std;

const int max_n = 50001;

typedef long long ll;

struct node

inline void update(int val)

}tr[max_n*4];

int a[max_n];

//更新父節點

void push_up(int id)

//下放標記,就下放一層

void push_down(int id)

tr[id<<1].update(lazy);

tr[id<<1|1].update(lazy);

tr[id].lazy = 0;

}//新建一棵線段樹

void build(int id, int l, int r)

int mid = (l+r)>>1;

build(id<<1, l, mid);

build(id<<1|1, mid+1, r);

push_up(id);

}//更新區間值

void update(int id, int l, int r, int val)

//下放標記,這樣就省去了每次都要從當前步更新到最後了

push_down(id);

int mid = (tr[id].l + tr[id].r) >> 1;

if (r<=mid)

else if (l > mid)

else

push_up(id);

}//查詢區間

ll query(int id, int l, int r)

push_down(id);

int mid = (tr[id].l + tr[id].r)>>1;

if (r<=mid)

else if (l>mid)

else }

int main()

build(1, 1, n);

for (int i=0; i> c;

if (c == 'q')

else

}return 0;

}

線段樹模板(模板)

參考部落格 持續更新。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img xhrgdjcd 1613976863463 區間儲存在陣列中的下標對應為 12 3 4 5 6 7 8 9 10 11 12 13 14 15 四部分單點更新 根據題目的要求編寫自己的pushup,query...

線段樹模板

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...