RMQ(線段樹實現)

2021-06-01 05:40:16 字數 870 閱讀 7757

t_t第乙個線段樹程式,還沒a過題,不過也很感動, 先貼出來

//下標從0開始,輸入-1 -1 結束.求每一段區間之間的最大值。

#include #include typedef struct treenodenode;

int mymax(int a, int b)

node* buildtree(int a, int b)

p -> lc = buildtree(a, (a + b) / 2);

p -> rc = buildtree((a + b) / 2 + 1, b);

return p;

}void insert(node *t, int pos, int key)

if (pos <= (t -> ld + t -> rd) / 2)

else

t -> key = mymax(t -> lc -> key, t -> rc -> key);

}int search(node *t, int a, int b)

if (a <= (t -> ld + t -> rd) / 2)

if (b > (t -> ld + t -> rd) / 2)

return res;

}int main(void);

int left, right;

int i, j;

node *linetree = buildtree(0, 10);

for (i = 0; i < 11; i++)

while (scanf("%d%d", &left, &right), left != -1 || right != -1)

return 0;

}

RMQ 線段樹複習

首先是rmq include include includeusing namespace std const int maxn 50000 100 int dmax maxn 20 int dmin maxn 20 void initmax int n,int d 初始化最大值查詢 遞迴建立線段樹...

RMQ問題 st 線段樹

j 演算法 rmq range minimum maximum query 問題是指 對於長度為n的數列a,回答若干詢問rmq a,i,j i,j n 返回數列a中下標在 i,j 裡的最小 大 值,也就是說,rmq問題是指求區間最值的問題 主要方法及複雜度 處理複雜度和查詢複雜度 如下 1.樸素 即...

基於線段樹的RMQ

rmq range minimum maximum query 區間最值查詢,即給出長度為n的陣列a,以及m組詢問s t s t n 返回區間 s,t 中的最值。基於線段樹的方法實現的話,建樹o n 查詢o logn 相比st,適合用於n更大,m較小的情況。void built int k,int ...