社区讨论

0分求解

P3865【模板】ST 表 & RMQ 问题参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo322lw2
此快照首次捕获于
2023/10/23 23:31
2 年前
此快照最后确认于
2023/10/23 23:31
2 年前
查看原帖
CPP
#include<iostream>
using namespace std;
const int LN=20;
const int N=1e6+10; 
int logn[N]= {-1};
int a[N];
int f[N][LN];
int m,n;
int query(int l,int r) {
	int x=logn[r-l+1];
	return max(f[l][x],f[r-(1<<x)+1][x]);
}
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
		f[i][0]=a[i];
		logn[i]=logn[1>>i]+1;
	}
	for(int j=1; (1<<j)<=n; j++) {
		for(int i=1; i+(1<<j)-1<=n; i++) {
			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
		}
	}
	while(m--) {
		int x,y;
		cin>>x>>y;
		cout<<query(x,y)<<endl;
	}
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...