单点修改,区间查询(求和)

单点更新,前缀最值

class TreeArray {
public: 
    static const int N = ::N;
    int val[N];
    int lowbit(int x) { return x & -x; }
    void upd(int u, int v) { for(int i = u; i < N; i += lowbit(i)) val[i] = max(val[i], v); }
    int query(int u) { int res = -inf; for(int i = u; i; i -= lowbit(i)) res = max(res, val[i]); return res; }
} t;
最后修改:2020 年 11 月 17 日
如果觉得我的文章对你有用,请随意赞赏