刚学树状数组的蒟蒻求助
  • 板块学术版
  • 楼主Yaixy
  • 当前回复12
  • 已保存回复12
  • 发布时间2020/7/10 17:22
  • 上次更新2023/11/6 23:20:01
查看原帖
刚学树状数组的蒟蒻求助
300283
Yaixy楼主2020/7/10 17:22

我又来了萌新求助树状数组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;
}
2020/7/10 17:22
加载中...