码迷,mamicode.com
首页 > 编程语言 > 详细

RMQ算法

时间:2019-08-27 14:30:34      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:链接   alt   closed   pre   latex   lap   区间   ret   时间   

目的: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]);
}
View Code

原理链接:https://blog.csdn.net/qq_41311604/article/details/79900893

RMQ算法

标签:链接   alt   closed   pre   latex   lap   区间   ret   时间   

原文地址:https://www.cnblogs.com/myrtle/p/11418016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!