您的位置:首页 > 其它

敌兵布阵

2015-07-21 23:34 363 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1166

#include<iostream>

#include<cstdio>

using namespace std;

int n,a[50005];

char sh[15];

int lowbit(int i)

{
return i&(-i);

}

void updata(int i,int val)

{
while(i<=n)
{
a[i]+=val;
i+=lowbit(i);
}

}

int sum(int i)

{
int sum=0;
while(i>0)
{
sum+=a[i];
i-=lowbit(i);
}
return sum;

}

int main()

{
int i,val,t,x,y,zz=1;
cin>>t;
while(t--)
{
memset(a,0,sizeof(a));
cin>>n;
for(i=1;i<=n;i++)
{
cin>>val;
updata(i,val);
}
printf("Case %d:\n",zz++);
while(cin>>sh)
{
if(sh[0]=='E')
break;
cin>>x>>y;
if(sh[0]=='A')
updata(x,y);
else if(sh[0]=='S')
updata(x,-y);
else
printf("%d\n",sum(y)-sum(x-1));
}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: