UOJ Logo zmhx2的博客

博客

一维树状数组模板

2015-03-28 17:08:29 By zmhx2

一维树状数组模板

#include<cstdio>
#include<cstdlib>
#include<cstring>
int num[100002]={0},tree[100002]={0};
int n,l,r;
int lowbit(int x)
{
    return x&(-x);
}
int sum(int pos)
{
       int sum=0;
       while(pos>0)
       {
         sum+=tree[pos];
         pos-=lowbit(pos);
      }
      return sum;
}
void plus(int pos, int num)
{
       while(pos<=n)
    {
         tree[pos]+=num;
         pos+=lowbit(pos);
      }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&num[i]);
    for(int i=1;i<=n;i++)plus(i,num[i]);
    printf("%d\n",sum(n));
    return 0;
}

评论

osu
前排跪Orz
cyxhahaha
前排跪,明明psx的模板。。。
zxozxo
前排跪Orz
tgopknight
妈呀!/Orz
yyh5900
妈呀!/Orz

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。