留待學習線段樹

2021-06-03 02:54:20 字數 788 閱讀 7532

#include

#define lson l , m , rt << 1

#define rson m + 1 , r , rt << 1 | 1

const int maxn = 55555;

int sum[maxn<<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 p,int add,int l,int r,int rt)

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

if (p <= m) update(p , add , l,m,rt<<1);

else update(p , add , m+1,r,rt<<1|1);

pushup(rt);

}int query(int l,int r,int l,int r,int rt)

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

int ret = 0;

if (l <= m) ret += query(l , r , l,m,rt<<1);

if (r > m) ret += query(l , r , m+1,r,rt<<1|1);

return ret;

}int main()

}return 0;

}

線段樹學習

今天學習了線段樹。是敲了不少 可是感覺還沒有真正理解 先不貼題目。再消化消化。一會兒還有計組實驗。還有那個傲嬌的老師。真是煩。餓。先去吃飯去。一天木有吃。以下 線段樹模板 線段樹的節點 節點包括兩部分資訊,基本域,和資訊域 基本域 左右邊界ld,rd.左右孩子 lc,rc 資訊域 key值,如rmq...

學習線段樹

參考文章 從簡單說起,線段樹其實可以理解成一種特殊的二叉樹。但是這種二叉樹較為平衡,和靜態二叉樹一樣,都是提前已經建立好的樹形結構。針對性強,所以效率要高。這裡又想到了一句題外話 動態和靜態的差別。動態結構較為靈活,但是速度較慢 靜態結構沒有節省記憶體,但速度較快。演算法導論中有涉及區間樹的內容,那...

線段樹學習筆記

線段樹是一種 二叉搜尋樹 與區間樹 相似,它將乙個區間劃分成一些單元區間,每個單元區間對應線段樹中的乙個葉結點。使用線段樹可以快速的查詢某乙個節點在若干條線段中出現的次數,時間複雜度為o logn 而未優化的 空間複雜度 為2n,因此有時需要離散化讓空間壓縮。以下筆記摘自lcomyn神犇部落格 1....