poj2352树状数组

来源:互联网 发布:lol小漠鞋子淘宝店 编辑:程序博客网 时间:2024/06/06 03:48
最近趁着期末复习的时间看了树状数组,似懂非懂,假期一定要补上一篇树状数组的博客//AC代码(仿照别人的树状数组的模板过的)#include <stdio.h> int c[32005]; int n; int a[32005];  int lowbit(int x)  {      return x&(-x);  }  void add(int index,int step)//对第index个数进行更改,更改step,注意对之后造成了影响  {      while(index<=32006)      {          c[index]+=step;          index+=lowbit(index);      }  }  int sum(int index)//求到第index之和  {      int sum;      sum=0;      while(index>0)      {          sum+=c[index];          index-=lowbit(index);      }      return sum;  }  int main()  {      int i,c,d;      scanf("%d",&n);      for (i=1;i<=n;i++)      {          scanf("%d%d",&c,&d);          a[sum(++c)]++;//因为树状数组的下标是从1开始的,即前c项之和得到的结果+1          add(c,1);//这个数也加一       }       for (i=0;i<n;i++)        printf("%d\n",a[i]);       return 0;  }

0 0