树状数组模板

复制代码
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 @   HHzp  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示