RMQ 模板 vijos1514天才的記憶

2021-07-24 17:24:50 字數 1510 閱讀 3241

p1514天才的記憶

背景 神仙飛啊飛

描述 從前有個人名叫w and n and b,他有著天才般的記憶力,他珍藏了許多許多的寶藏。在他離世之後留給後人乙個難題(專門考驗記憶力的啊!),如果誰能輕鬆回答出這個問題,便可以繼承他的寶藏。題目是這樣的:給你一大串數字(編號為1到n,大小可不一定哦!),在你看過一遍之後,它便消失在你面前,隨後問題就出現了,給你m個詢問,每次詢問就給你兩個數字a,b,要求你瞬間就說出屬於a到b這段區間內的最大數。一天,一位美麗的姐姐從天上飛過,看到這個問題,感到很有意思(主要是據說那個寶藏裡面藏著一種美容水,喝了可以讓這美麗的姐姐更加迷人),於是她就竭盡全力想解決這個問題。but,她每次都以失敗告終,因為這數字的個數是在太多了!於是她請天才的你幫他解決。如果你幫她解決了這個問題,可是會得到很多甜頭的哦!

格式 輸入格式

乙個整數n表示數字的個數,接下來一行為n個數。第三行讀入乙個m,表示你看完那串數後需要被提問的次數,接下來m行,每行都有兩個整數a,b。

輸出格式

輸出共m行,每行輸出乙個數。

模板:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#ifdef win32

#define auto "%i64d"

#else

#define auto "%lld"

#endif

#define clock clocks_per_sec

#define cle(x) memset(x,0,sizeof(x))

#define maxcle(x) memset(x,0x3f,sizeof(x))

#define mincle(x) memset(x,-1,sizeof(x))

#define maxx(x1,x2,x3) max(x1,max(x2,x3))

#define minn(x1,x2,x3) min(x1,min(x2,x3))

#define cop(a,x) memcpy(x,a,sizeof(a))

#define frop "hdu"

#define ll long long

#define smin(x,tmp) x=min(x,tmp)

#define smax(x,tmp) x=max(x,tmp)

using namespace std;

const int n = 200010;

int a[n];

int rmq[n][20],n,m;

void rmq_init()

int rmq(int l,int r)

void init()

int main()

return

0;}

rmq演算法詳解 模板

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

RMQ 區間最值 模板

rmq 的全稱為range max min query。構造dp陣列的時間為o nlogn 但是查詢時間為o 1 所以當資料量小於logn時,用樸素遍歷找最值就好,但是請求次數大於logn時,就要用這個模板。利用動態規劃的思想。int order maxn 使每乙個2 order i i 2 ord...

RMQ之ST演算法模板

1 include2 include 3 include4 using namespace std 5const int n 1e6 111 6 int max n 21 min n 21 a n 7void st int a,int n 預處理,o nlogn 820 21 22 23int lo...