線段樹基本應用 區間最值查詢

2022-08-11 12:36:13 字數 1002 閱讀 1887

感覺對線段樹快有陰影了。。還是先從最簡單的開始吧。關鍵是理解原理。

求區間最小值:

題目:2 //testcases

5 3  //n:陣列元素個數,m:查詢次數

78 1 22 12 3  //輸入陣列,每個數最大值不超過10^5

1 2     //查詢從l到r上的最小值

3 54 4

#include #include #define lson l , m , rt << 1

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

using namespace std;

const int maxn = 105000;

int min[maxn<<2];

void pushup(int rt)

void build(int l,int r,int rt)

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

build(lson);

build(rson);

pushup(rt);

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

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

int ret = 100090;

if (l <= m) ret = min(ret , query(l , r , lson));

if (r > m) ret = min(ret , query(l , r , rson));

return ret;

}void update(int p,int sc,int l,int r,int rt)

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

if (p <= m) update(p , sc , lson);

else update(p , sc , rson);

pushup(rt);

}int main()

}return 0;

}

線段樹基本應用 區間最值查詢

感覺對線段樹快有陰影了。還是先從最簡單的開始吧。關鍵是理解原理。求區間最小值 題目 2 testcases 5 3 n 陣列元素個數,m 查詢次數 78 1 22 12 3 輸入陣列,每個數最大值不超過10 5 1 2 查詢從l到r上的最小值 3 54 4 include include defin...

線段樹,區間最值

codeforces 91b queue 線段樹,區間最值 題意是,對於給定區間內的每個元素,要求求出離他最遠的那個元素之間的距離。可以維護乙個線段樹的最小值,每次對於乙個元素,查詢其最右邊的元素的位置。include include include includeusing namespace s...

區間最值與線段樹

區間最值問題 有如下無序序列,求任意子區間段的最大值。接著,我們要用分治的思想來快速地解決上面的問題。在解決問題之前,先介紹一些分治的概念。二分查詢 二分查詢是分治思想的典型運用 我們有如下序列 a1,a2,a3 an.要查詢其中等於b的元素。一種方法就是乙個個對比,看看是不是相等,時間複雜度為n。...