树状数组模板

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;
}
//树状数组可以快速判断区间的值,和线段树类似,但是代码比线段树简洁

 

posted @ 2022-05-20 21:40  HHzp  阅读(29)  评论(0)    收藏  举报