社区讨论

40 st表 TLE 求剪枝

P12241[蓝桥杯 2023 国 C] 最大区间参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mhj10dvf
此快照首次捕获于
2025/11/03 18:57
4 个月前
此快照最后确认于
2025/11/03 18:57
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int a[N], st[20][N], lg[N];
int n;
void init() {
    lg[1] = 0;
    for (int i = 2; i <= N; i++) lg[i] = lg[i / 2] + 1;
    for (int i = 1; i <= n; i++) st[0][i] = a[i];
    for (int k = 1; (1 << k) <= n; k++) {
        for (int i = 1; i + (1 << k) - 1 <= n; i++) {
            st[k][i] = min(st[k - 1][i], st[k - 1][i + (1 << (k - 1))]);
        }
    }
}
int RMQ(int l, int r) {
    int k = lg[r - l + 1];
    return min(st[k][l], st[k][r - (1 << k) + 1]);
}

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    init();
    int maxx = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j++) {
            int minn = RMQ(i, j);
            maxx = max((j - i + 1) * minn ,maxx);
        }
    }
    cout << maxx;
    return 0;
}

求壶关

回复

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

正在加载回复...