树状数组
Posted 远见望远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树状数组相关的知识,希望对你有一定的参考价值。
https://en.wikipedia.org/wiki/Fenwick_tree
1 int a[100001]; 2 int b[100001]; 3 int n,m; 4 int lowbit(int x) 5 { 6 return x&(-x); 7 } 8 void init() 9 { 10 scanf("%d%d",&n,&m); 11 for(int i=1;i<=n;i++) 12 { 13 scanf("%d",&a[i]); 14 } 15 for(int i=1;i<=n;i++) 16 { 17 b[i]=a[i]; 18 } 19 for(int i=1;i<=n;i++) 20 { 21 b[i+lowbit(i)]+=b[i]; 22 } 23 return; 24 } 25 void update(int pos,int delta) 26 { 27 b[pos]+=delta; 28 for(int i=pos;i<=n;i+=lowbit(i)) 29 { 30 b[i+lowbit(i)]+=delta; 31 } 32 return; 33 } 34 int query(int l,int r) 35 { 36 int res=0; 37 for(int i=r;i>0;i-=lowbit(i)) 38 { 39 res+=b[i]; 40 } 41 for(int i=l-1;i>0;i-=lowbit(i)) 42 { 43 res-=b[i]; 44 } 45 return res; 46 }
以上是关于树状数组的主要内容,如果未能解决你的问题,请参考以下文章