POJ 3264 RMQ 分塊演算法

2021-07-24 04:39:06 字數 554 閱讀 5012

題目連線:

分塊演算法:將n個數 每sqrt(n)個數分成乙個塊,每乙個塊中加入乙個value域儲存這個塊的最大值,查詢的時候左右兩個塊在原序列上遍歷查詢最大值,中間的區間直接在預處理的塊上查詢最大值,

複雜度為:o(sqrt(n))

**:

#include 

#include

#include

#define sf scanf

#define pf printf

using

namespace

std;

const

int maxn = 50000 + 5,inf = 2e9;

struct blockmax_block[maxn],min_block[maxn];

int block_size,block_cnt;

int a[maxn],n,m;

void init_block()

}int search(int l,int r)

int main()

}}

poj 3264 RMQ問題 ST演算法

部落格已遷至 www.lfy2us.com 比較裸的rmq問題,即對乙個無序陣列,查詢q次,每次查詢某個區間內最大值與最小值之差。解決此問題的演算法有三種 1 最簡單的方法就是o n 了 2 線段樹 3 st sparse table 演算法 其中st演算法為解此問題的最佳方法 預處理時間複雜度o ...

POJ 3264 RMQ問題 ST演算法

因為之前都是線段樹解決rmq問題,省腦子 因為寫的順手 但是因為rmq畢竟常數大,而且其實程式還相對st要長 以前寫過st演算法,但是因為每次都在糾結到底 1 呢,還是 1呢,邊界問題處理的我蛋都碎了好幾次,這次重新學習了一下st sparse table 演算法,好好的處理了這些問題的理解。st演...

poj3264 RMQ問題的ST演算法

rmq range minimum maximum query 即查詢給定區間的最值。問題描述 對於給給定的陣列a 1 n 回答若干次查詢檔案rmq i,j 即返回陣列a i j 的最大值 最小值 問題分析 該問題可以使用樸素查詢法,也可以用線段樹,st演算法,rmq與lca互相轉換。這裡我們分析高...