HDU 1166(树状数组 单点更新 区域求值)

来源:互联网 发布:神经网络算法 编辑:程序博客网 时间:2024/06/08 12:36

链接:点击打开链接

#include <cstdio>#include <cstring>#include <iostream>using namespace std;#define MAXN 50005int tree[MAXN],n;int LowBit(int position){return position&(-position);}void Add(int position,int value){for(int i=position;i<=n;i+=LowBit(i))tree[i]+=value;return;}int Get(int position){int result=0;for(int i=position;i>0;i-=LowBit(i))result+=tree[i];return result;}int main(){int t;int x,y,temp;char oper[10];cin>>t;for(int i=1;i<=t;i++){memset(tree,0,sizeof(tree));printf("Case %d:\n",x);cin>>n;for(int j=1;j<=n;j++){scanf("%d",&temp);Add(j,temp);}while(scanf("%s",oper)!=EOF&&oper[0]!='E'){cin>>x>>y;        switch(oper[0]){        case 'Q':printf("%d\n",Get(y)-Get(x-1));             break;        case 'A':Add(x,y);             break;        case 'S':Add(x,-y);             break;        }    }}return 0;}


1 0
原创粉丝点击