以下為基礎模板
//原陣列下標+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...