感覺。。。。。。。。。
樹狀數組
#include<iostream>
#include<string.h>
#include<string>
#include<stdio.h>
using namespace std;
template<class ValueType,int MaxSize>
class TreeArray{
public:
TreeArray():size(MaxSize){}
int low(int n){return n&(-n);}
void clear()
{
memset(ta,0,sizeof(ta));
}
void add(int pos,ValueType v)
{
while(pos<size){
ta[pos]+=v;
pos+=low(pos);//用來的到下一個包含的位置
}
}
ValueType sum(int pos)
{
ValueType v=0;
while(pos>0){
v+=ta[pos];
pos-=low(pos);
}
return v;
}
private:
ValueType ta[MaxSize];
int size;
};
TreeArray<int,1000010> tr;
int main()
{
int v;
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%d",&v);
tr.add(i,v);
}
string s;
int x,y;
while(m--){
cin>>s;
scanf("%d %d",&x,&y);
if(s=="ADD"){
tr.add(x,y);
}else{
cout<<tr.sum(y)-tr.sum(x-1)<<endl;
}
}
return 0;
}