線段樹的基礎非遞迴的使用

2021-08-04 11:11:51 字數 592 閱讀 1570

以下為基礎模板

//原陣列下標+1=線段樹下標

//線段樹下標+n-1=儲存下標 (空出前和尾的乙個位置)

//原陣列下標+n=儲存下標

#define maxn 100007

int a[maxn],sum[maxn<<2],add[maxn<<2];

int n;//n為擴充元素的個數

int n;//n為原陣列元素的個數

void build(int n)  }

void update(int l,int c)

int query(int l.int r)

return ans;

}void update_interval(int l,int r,int c)

//相同之後繼續更新上層的sum;

if(;s;s>>=1,t>>=1)

}int query_interval(int l,int r)

for(;s;s>>=1,t>>=1)

return ans;

}

參考鏈結

ZKW線段樹 非遞迴版本的線段樹

學習和參考 下面是支援區間修改和區間查詢的zkw線段樹模板,先記下來。include include include include include include include include include include include include include include inc...

非遞迴版線段樹模板

摘自這裡 0 定義 define maxn 100007 int a maxn n,n 原陣列,n為原陣列元素個數 n為擴充元素個數 int sum maxn 2 區間和 int add maxn 2 懶標記 1 建樹 void build int n 2 點修改 a l c void update...

樹的非遞迴

code 資料結構.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std typedef char elemtype typedef struct lnode lnode,linkstack 棧 typedef struct b...