ST表

若如初见. 提交于 2019-12-04 10:36:18

ST表

可以用来静态求解RMQ问题

预处理 \(O(n\ log \ n)\)

查询 \(O(1)\)

void pre_st()
{
    for(int j=1;j<=20;j++)
        for(int i=1;i+(i<<j)-1<=n;i++)
            st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
}

void pre_log()
{
    log[0]=-1;
    for(int i=1;i<=MXA;i++)
        log[i]=log[i>>1]+1;
}

int query(int l,int r)
{
    int t=log[r-l+1];
    return max(st[l][t],st[r-(1<<t)+1][t]); //两个区间有交集 但是并不影响查询的结果
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!