线段树模板
线段树模板 单点更新+区间查询 # include <iostream> # include <stdio.h> # include <math.h> # include <string> # include <string.h> # include <algorithm> # define ll long long # define l(p) t[p].l //区间左端点 # define r(p) t[p].r //区间右端点 # define mid (l(p)+r(p))/2 # define sum(p) t[p].sum # define lp p<<1 //左孩子 # define rp (p<<1)|1 //右孩子 using namespace std ; const int maxN = 2e5 + 10 ; int a [ maxN ] ; struct Node { int l , r , sum ; } t [ maxN * 4 ] ; void build ( int p , int l , int r ) { l ( p ) = l ; r ( p ) = r ; if ( l == r ) { sum ( p ) = a [ l ] ; return ; } build ( lp , l , mid ) ; build ( rp , mid + 1