線段樹(模板)

2022-09-26 05:15:08 字數 670 閱讀 6682

# include

# include

using namespace std;

const int n = 2e5+10;

struct nodetr[4*n];/*存樹,按照4倍儲存空間儲存*/

/*線段樹的存圖形式為頂點為u,他的左兒子為u*2,右兒子為u*2+1

用位運算優化為左兒子:u<<1

右兒子:u<<1|1

*/void build(int u,int l,int r)/*初始化建圖*/

;/*頂點u的左右邊界為[l,r]*/

if(l == r) return;/*如果左右邊界相同,也就是說該點為頂點,而不是線段*/

int mid = l+r>>1;/*取中點*/

build(u<<1,l,mid),build(u<<1|1,mid+1,r);/*分別建立兩段線段*/

}void pushup(int u)/*根據子節點來更新根節點的資料*/

int query(int u,int l,int r)/*查詢*/

void modify(int u,int x,int v)/*單點修改*/

}int m,p;/*m表示操作次數,p是資料需要%的值*/

int main()

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