RMQ
定義
RMQ(Range Minimum/Maximum Query),即區間最值查詢,給定一個長度為N的區間,M個詢問,每次詢問Li到Ri這段區間元素的最大值/最小值
演算法
1、線段樹
2、ST表
【倍增】RMQ的ST表演算法
dp(i,j)表示以i為起點長度為2^j的區間內的最值
dp(i,j)=max(dp[i][j-1],dp[i+2^j][j-1])
答案為max(dp[l][k],dp[r-(1<<k)+1][k])
int a[N],dp[N][21];
void ST(int n)
{
for(int i=1;i<=n;i++) dp[i][0]=a[i];
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
//查詢陣列a的[l,r]區間的最值 【倍增】RMQ的ST表演算法
int query(int l,int r)
{
int k=(int)(log((double)(r-l+1))/log(2.0));
return max(dp[l][k],dp[r-(1<<k)+1][k]);
}
相關文章
- RMQ模板MQ
- 淺談RMQMQ
- RMQ求lcaMQ
- HDU Find the hotel(RMQ)MQ
- RMQ演算法MQ演算法
- 線段樹--RMQMQ
- 3339: Rmq ProblemMQ
- $RMQ$問題($ST$表)MQ
- HDU 3183 A Magic Lamp (RMQ)LAMPMQ
- RMQ的SSL配置最佳實踐MQ
- RMQ_第一彈_Sparse TableMQ
- RMQ問題的各種解法MQ
- HDU 2888 Check Corners(二維RMQ)MQ
- 【RMQ】poj 3264 Balanced LineupMQ
- hdu 1754 【線段樹/RMQ】I Hate ItMQ
- 學習筆記----RMQ演算法筆記MQ演算法
- HDU 3486 Interviewe(RMQ+二分)ViewMQ
- POJ3264 Balanced Lineup【RMQ】MQ
- hdu 4123 樹形DP+RMQMQ
- 資料結構——RMQ(ST表)問題資料結構MQ
- POJ 3264 Balanced Lineup【RMQ問題】MQ
- UVA 11235-Frequent values(RMQ)MQ
- POJ 3264 Balanced Lineup(簡單的RMQ)MQ
- UVA 11235 經典RMQ問題MQ
- O(n)-O(1) 線性 RMQ 學習筆記MQ筆記
- poj--2019Cornfields+二維RMQ問題MQ
- POJ 3368 Frequent values (UVA 11235)(RMQ)MQ
- Codeforces Round #361 (Div. 2) D RMQ+二分MQ
- RMQ——支援合併和優先順序的訊息佇列MQ佇列
- POJ 3264-Balanced Lineup(RMQ-ST演算法)MQ演算法
- POJ 3368-Frequent values(RMQ+離散化-最頻繁的元素)MQ
- 洛谷P3763 [TJOI2017]DNA(字尾陣列 RMQ)陣列MQ
- HDU 4622 Reincarnation( 任意區間子串的長度, 字尾陣列+RMQ)陣列MQ
- P2216 [HAOI2007]理想的正方形(二維RMQ)MQ
- hdu5289||2015多校聯合第一場1002貪心+RMQMQ
- XNMySQL實戰視窗函式SQL分析班級學生考試成績及生活消費rmqMySql函式MQ