線段樹,區間最值

2021-09-28 19:11:40 字數 506 閱讀 3971

codeforces 91b queue (線段樹,區間最值)

題意是,對於給定區間內的每個元素,要求求出離他最遠的那個元素之間的距離。

可以維護乙個線段樹的最小值,每次對於乙個元素,查詢其最右邊的元素的位置。

#include#include#include#includeusing namespace std;

const int maxn = 1e5+6;

struct node

edge[4*maxn];

int a[maxn];

unordered_mapvis;

void build(int next,int x,int y)

else

}int query(int next,int d)

int main()

build(0,0,n-1);

int h;

for(int i=0;ireturn 0;

}

區間最值與線段樹

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

動態區間最值(RMQ) 線段樹

建樹 a aa陣列為初始陣列,tre etree tree 陣列為樹 typedef long long ll const int inf 0x7fffffff const int maxn 2e5 10 int a maxn int tree maxn 2 lz maxn 2 建樹函式 和普通線段...

區間歷史最值筆記 線段樹

cpu監控 要你維護對序列上的操作 1 區間加 2 區間賦值 3 區間最大值 4 區間歷史最值 使用線段樹 標記維護,記錄節點上發生的所有事件。注意到乙個線段樹節點,如果進行了modify操作,那麼接下來的加法都可以認為是modify。那麼乙個節點上的標記長度就至多為2了。設 text 標記時節點實...