求助ST表模板
  • 板块学术版
  • 楼主zhaowangji
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/9/11 20:03
  • 上次更新2023/11/5 13:24:45
查看原帖
求助ST表模板
164840
zhaowangji楼主2020/9/11 20:03

求助

#include<bits/stdc++.h>
using namespace std;
int Read();
int n,m;
int lg[100007],st[100007][51];
int main(){
	n=Read();m=Read();
	for(int i=1;i<=n;++i){
		lg[i]=lg[i/2]+1;
		st[i][0]=Read();
	}
	for(int i=1;i<=lg[n];++i)
		for(int j=1;j+(1<<i)-1<=n;++j)
			st[j][i]=max(st[j][i-1],st[j+(1<<(i-1))][i-1]);
	while(m--){
		int l=Read(),r=Read();
		int len=lg[r-l+1];
		cout<<max(st[l][len],st[r-(1<<len)+1][len])<<endl;
	}
	return 0;
}
int Read(){
	char ch=getchar();int res=0,flag=1;
	while(ch<'0'||ch>'9'){
		if(ch=='-')flag=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		res=res*10+ch-'0';
		ch=getchar();
	}
	return flag*res;
}

2020/9/11 20:03
加载中...