神奇線段樹QWQ

2021-08-21 16:36:29 字數 679 閱讀 7806

線段樹基於分治的思想會分治的思想,用於區間求值問題。

比如說:求區間的最大值,最小值等等;

給出乙個長隊為8的區間對他進行操作。

先將他分成若干區間(如圖藍色為區間標號,紅色為區間)直到分成單個點並把所需要的資訊存到單點上。

建樹

void build_tree(int k,int l,int r)//如果l==r說明為單點把資訊存到點上

int mid=(l+r)/2;

build_tree(k*2,l,mid);//對左兒子建樹

build_tree(k*2+1,mid+1,r);對右兒子建樹

treel[k].max=max(treel[k*2].max,treel[k*2+1].max);//其他資訊如最大值,最小值

}

注意:陣列應開到4倍如果線段樹寫的不好4倍也不夠得8倍23333.

查詢

int query(int k)
更新單點更新與查詢相似所以**就不放了

相信你已經掌握基本的線段樹了趕緊刷提去

火星補鍋 siano 神奇的線段樹

本來以為很難打的,沒想到主幹一次就打對了,然而把輸入的b和d弄混了,這sb錯誤調了兩個小時。神奇的線段樹。注意到有乙個性質,無論怎麼割草,生長速度快的一定不會比生長速度慢的矮。因此可以先排個序,然後就可以用線段樹維護了。首先維護區間的sum,這個很顯然。然後會發現乙個問題,每次割草時,不知道從 開始...

Trie樹的二三事QWQ

寫在前面trie,又稱字典樹,是一種用於實現字串快速檢索的多叉樹結構。trie的每個結點都擁有若干字元指標,若在插入或檢索字串時掃瞄到乙個字元c,就沿著當前節點的c這個字元指標,走向該指標指向的結點。我的沒有指標的版本理解 樹上的每個結點都記錄了兩個資訊,一是這個結點所代表的字元,二是這個字元是否是...

線段樹 02 構建線段樹

public inte ce merger 不能再縮小的基本問題是 對treeindex指向的節點的情況進行討論 public class segmenttree 在treeindex的位置建立表示區間 l.r 的線段樹 private void buildsegmenttree int treei...