LuckyOx

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
struct ST{
    int n;
    vector<vector<int>> st;

    ST(int x = 1e5){
        n = x;
        st.resize(x + 1, vector<int>(log2(n) + 1));
    }

    void build(int a[]){
        for (int i = 1; i <= n; i ++ ){
            st[i][0] = a[i];
        }
        
        for (int i = 1; i <= 20; i ++ ){
            for (int j = 1; j + (1 << i) - 1 <= n; j ++ ) {
                st[j][i] = min(st[j][i - 1], st[j + (1 << i - 1)][i - 1]);
            }
        }
    }

    int query(int l, int r){
        int k = log2(r - l + 1);
        return min(st[l][k], st[r - (1 << k) + 1][k]);
    }
};
posted on 2025-06-26 16:53  lucky_ox  阅读(8)  评论(0)    收藏  举报