树状数组模板
ll lowbit(ll x){//取二进制最后一位 return x&(-x); } void update(ll x,ll y,ll n){//单点更新,更新这个点的所有子节点的和,类似于该点的前缀和 for(ll i=x;i<=n;i+=lowbit(i)) l[i]+=y; } ll getsum(ll x){//查询该点的和 ll ans=0; for(ll i=x;i;i-=lowbit(i)) ans+=l[i]; return ans; }
//树状数组可以快速判断区间的值,和线段树类似,但是代码比线段树简洁