P3865 模板ST 表又称RMQ
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3865 模板ST 表又称RMQ相关的知识,希望对你有一定的参考价值。
st表的作用是可以快速的得到区间内的一个最大值,不过它是静态的,即一旦初始化不能修改。
https://www.luogu.com.cn/problem/P3865
#include<bits/stdc++.h>
using namespace std;
const int N=200010,M=21;
int n,m;
int w[N];
int f[N][M];
void init()//初始化
{
for(int j=0;j<M;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
if(!j) f[i][j]=w[i];
else f[i][j]=max(f[i][j-1],f[i+(1<<j-1)][j-1]);
}
int query(int l,int r)//查询
{
int len=r-l+1;
int k=log(len)/log(2);
return max(f[l][k],f[r-(1<<k)+1][k]);
}
int main(void)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&w[i]);
init();
while(m--)
{
int l,r; scanf("%d%d",&l,&r);
printf("%d\\n",query(l,r));
}
}
以上是关于P3865 模板ST 表又称RMQ的主要内容,如果未能解决你的问题,请参考以下文章