RMQ算法
Posted myrtle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RMQ算法相关的知识,希望对你有一定的参考价值。
目的:Range Minnum/Maxnum Query,区间最值查询
时间复杂度:预处理O(n*logn),查询O(1)
自用模板:
dp[i][j]表示从第i位开始连续 个数中的最小值,rmq(l,r)表示[l,r]区间中的最值
void rmq_init() for(int i=1;i<=N;i++) dp[i][0]=arr[i];//初始化 for(int j=1;(1<<j)<=N;j++) for(int i=1;i+(1<<j)-1<=N;i++) dp[i][j]=min(dp[i][j-1],dp[i+(1<<j-1)][j-1]); int rmq(int l,int r) int k=log2(r-l+1); return min(dp[l][k],dp[r-(1<<k)+1][k]);
原理链接:https://blog.csdn.net/qq_41311604/article/details/79900893
以上是关于RMQ算法的主要内容,如果未能解决你的问题,请参考以下文章