我又来了萌新求助树状数组sb题,有没有大佬可以帮忙看一下,谢谢QAQ。
PS:因为在上课所以lz可能会死一会
题面:
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,m,i,t,j,x,y,a[100005];
string s;
long long lowbit(long long x)
{
return x&(-x);
}
void change(long long k,long long x)
{
for(;k<=n;k+=lowbit(k)) a[k]+=x;
}
long long sum(long long k)
{
long long ans;
ans=0;
for(;k>=1;k-=lowbit(k)) ans+=a[k];
return ans;
}
int main()
{
scanf("%lld",&t);
for(i=1;i<=t;i++)
{
memset(a,0,sizeof(a));
scanf("%lld",&n);
printf("Case %lld:\n",i);
for(j=1;j<=n;j++) scanf("%lld",&a[j]);
while(cin>>s&&s[0]!='E')
{
scanf("%lld%lld",&x,&y);
if(s[0]=='A') change(x,y);
if(s[0]=='S') change(x,-y);
if(s[0]=='Q') printf("%lld\n",(sum(y)-sum(x-1)));
}
}
return 0;
}