树状数组的基本应用。注意:数据类型使用long long 而不是int ~否则两个测试样例都过不去!
代码#include#define lowbit(i) ((i)&(-i)) //lowbit写成宏定义的形式 using namespace std; const int maxn=1000005; int n,q;//数组长度,查询次数 long long c[maxn];//树状数组(下标为某一个元素,值为这个元素的出现次数) //update函数将第x个整数加上v void update(int x,int v){ for(int i=x;i<=n;i=i+lowbit(i)){ c[i]=c[i]+v; } } //getSum函数返回前x个整数之和 long long getSum(int x){ long long sum=0; for(int i=x;i>0;i=i-lowbit(i)){ sum=sum+c[i]; } return sum; } int main(){ cin>>n>>q; memset(c,0,sizeof(c)); for(int i=1;i<=n;i++){ int ans; cin>>ans; update(i,ans); } while(q--){ int x,y,z; cin>>x>>y>>z; if(x==1){ update(y,z); }else{ cout<



