本人fw刚学st表,没听懂(悲
  • 板块学术版
  • 楼主why_wpc
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/10/8 21:16
  • 上次更新2024/10/8 23:40:55
查看原帖
本人fw刚学st表,没听懂(悲
1147128
why_wpc楼主2024/10/8 21:16
#include<bits/stdc++.h>
using namespace std;
int n,m,l,r,st[114514][21],a[114514];
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
void g(){
	for(int i=1;i<=n;i++){
		st[i][0]=a[i];
	}
	int kk=log2(n)+1;
	for(int j=1;j<n;j++){
		int d=n-(1<<kk)+1;
		for(int i=1;i<=d;i++){
			st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
		}
	}
}
void lll(int l,int r){
	int k=log2(r-l+1);
	cout<<max(st[l][k],st[r-(1<<k)+1][k])<<endl;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	g();
	for(int i=1;i<=m;i++){
		cin>>l>>r;
		lll(l,r);
	}
	return 0;
}

2024/10/8 21:16
加载中...