題意:
給n組資料,q個詢問,每次詢問區間l,r最大值與最小值的差是多少。
解析:睡前一水,卻錯了2發。
詢問的時候寫錯了,並不是直接去更新maxx-minn的最大值。。。
是直接更新maxx,minn,然後最後一減就行了。
**:
#include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long
#define lson lo, mi, rt << 1
#define rson mi + 1, hi, rt << 1 | 1
using namespace std;
const int maxn = 50000 + 10;
const int inf = 0x3f3f3f3f;
const double eps = 1e-8;
const double pi = acos(-1.0);
const double ee = exp(1.0);
int minn, maxx;
int maxpoint[maxn << 2];
int minpoint[maxn << 2];
void pushup(int rt)
void build(int lo, int hi, int rt)
int mi = (lo + hi) >> 1;
build(lson);
build(rson);
pushup(rt);
}void query(int l, int h, int lo, int hi, int rt)
int mi = (lo + hi) >> 1;
if (l <= mi)
query(l, h, lson);
if (mi < h)
query(l, h, rson);
}int main()
}return 0;
}
RMQ 求區間最值(poj 3264)
1.概述 rmq range minimum maximum query 即區間最值查詢,是指這樣乙個問題 對於長度為n的數列a,回答若干詢問rmq a,i,j i,j n 返回數列a中下標在i,j之間的最小 大值。這兩個問題是在實際應用中經常遇到的問題,下面介紹一下解決這兩種問題的比較高效的演算法...
滑動視窗(poj,線段樹維護區間最值)
現在有一堆數字共n個數字 n 10 6 以及乙個大小為k的視窗。現在這個從左邊開始向右滑動,每次滑動乙個單位,求出每次滑動後視窗中的最大值和最小值。例如 the array is 1 3 1 3 5 3 6 7 and k 3.輸入格式 輸入一共有兩行,第一行為n,k。第二行為n個數 輸出格式 輸出...
線段樹,區間最值
codeforces 91b queue 線段樹,區間最值 題意是,對於給定區間內的每個元素,要求求出離他最遠的那個元素之間的距離。可以維護乙個線段樹的最小值,每次對於乙個元素,查詢其最右邊的元素的位置。include include include includeusing namespace s...