社区讨论

【提示:本贴疑似讨论区题解】动态 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 条回复,欢迎继续交流。

正在加载回复...