学习ST表,我看到知乎上有一篇文章ST表
他在文章最后提到了cache优好的ST表,但是我不能判断这个正确性,因为它好像过不了这个题,所以它的这个是否正确呢,附上代码:
int A[N], f[__lg(N) + 1][N];
void init(int n) {
for (int i = 1; i <= n; ++i)
f[0][i] = A[i];
for (int i = 1; i <= __lg(n); ++i)
for (int j = 1; j + (1 << i) - 1 <= n; ++j)
f[i][j] = max(f[i - 1][j], f[i - 1][j + (1 << (i - 1))]);
}
int query(int l, int r) {
int s = __lg(r - l + 1);
return max(f[s][l], f[s][r - (1 << s) + 1]);
}