社区讨论
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 条回复,欢迎继续交流。
正在加载回复...