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的主要内容,如果未能解决你的问题,请参考以下文章

RMQ与st表

luogu P3865ybtojRMQ问题课堂过关模板ST 表 &例题1数列区间

[总结]RMQ问题&ST算法

P3865 模板ST表

P3865 模板ST表

P3865 模板ST表