区间最值

线段树维护区间最值是需要支持如下的操作:对于一个数组 a[]a[]

  1. query_sum(l, r) 求出 i=lrai\sum_{i=l}^r a_i
  2. query_min(l, r) 求出 mini[l,r]ai\min_{i\in[l,r]} a_i
  3. query_max(l, r) 求出 maxi[l,r]ai\max_{i\in[l,r]} a_i
  4. make_min(l, r, x) 修改 aimin(x,ai)a_i\gets \min(x, a_i)
  5. make_max(l, r, x) 修改 aimax(x,ai)a_i\gets \max(x, a_i)
  6. add(l, r, x) 修改 aiai+xa_i\gets a_i+x