欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ST表【模板】

程序员文章站 2024-01-14 13:41:04
...
const int maxn = 1e5+10;
const int maxn2=log2(maxn)+1;//maxn2的值最好直接计算得出 
int ST[maxn][maxn2];
void Init(int n)
{
	for(int j=1;j<=maxn2;j++){
		for(int i=1;i+(1<<j)-1<=n;i++){
			 ST[i][j]=max(ST[i][j-1],ST[i+(1<<(j-1))][j-1]);
		}    
	}
}
int Query(int l,int r)
{
    int k=log2(r-l+1); 
    return max(ST[l][k],ST[r-(1<<k)+1][k]);
}