树状数组

来源:互联网 发布:中老年春秋女上衣淘宝 编辑:程序博客网 时间:2024/06/08 08:57
#include<stdio.h>#include<string.h>using namespace std;const int N = 100005;int num[N*4],arr[N];int n;int lowbit(int x){return x&(-x);}void change(int pos,int x){while(pos<=n){  num[pos]+=x;  pos+=lowbit(pos);}}int Sum(int k){int ans=0;while(k>0){ans+=num[k];k-=lowbit(k);}return ans;}int Solve(int l,int r){return Sum(r)-Sum(l-1);}int main(){    scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&arr[i]);change(i,arr[i]);}int m;scanf("%d",&m);while(m--){   int l,r;   scanf("%d%d",&l,&r);   printf("%d\n",Solve(l,r));}}

原创粉丝点击