社区讨论
【提示:本贴疑似讨论区题解】动态 push_back 的 ST 表?
P3865【模板】ST 表 & RMQ 问题参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mifuu93y
- 此快照首次捕获于
- 2025/11/26 18:21 3 个月前
- 此快照最后确认于
- 2025/11/26 18:22 3 个月前
这份代码过了:
CPP#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e5+5;
int n,m,st[N][20],bs[N];
int getmax(int l,int r) {
return max(st[l][bs[r-l+1]],st[r-(1<<bs[r-l+1])+1][bs[r-l+1]]);
}
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=16;i++) {
for(int j=(1<<i)+1;j<=min((1<<i+1),n);j++) bs[j]=i;
}
for(int i=1;i<=n;i++) {
scanf("%d",&st[i][0]);
for(int j=1;;j++) {
if(i-(1<<j)<0) break;
st[i-(1<<j)+1][j]=max(getmax(i-(1<<j)+1,i-1),st[i][0]);
}
}
while(m--) {
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",getmax(x,y));
}
return 0;
}
但是真的对吗?
回复
共 4 条回复,欢迎继续交流。
正在加载回复...