您的位置:首页 > 其它

HDU-1166-敌兵布阵

2013-04-15 16:05 260 查看
#include<iostream>

#define N 50005

int num
;
int t,n,tmp;

char c;
char str_c[20];
int x,y;

int low_bit(int x)
{
return  (-x)&x;
}

void update(int p,int d)
{
while(p<=n)
{
num[p]+=x;
p+=low_bit(p);
}
}

int sum(int p)
{
int sum=0;
while(p>0)
{
sum+=num[p];
p-=low_bit(p);
}
return sum;
}

void cmd()
{
while (std::cin>>str_c)
{
switch (str_c[0]){
case 'A':
std::cin>>x>>y;
update(x,y);
break;
case 'S':
std::cin>>x>>y;
update(x,-y);
break;
case 'Q':
std::cin>>x>>y;
std::cout<<sum(y)-sum(x-1)<<std::endl;
break;
case 'E':
return;
default:
break;
}
}
}

int main()
{
std::cin>>t;
for(int i=0;i!=t;i++){
std::cin>>n;
for(int i=0;i!=n;i++){
std::cin>>tmp;
update(i+1,tmp);
}

std::cout<<"Case "<<i+1<<":"<<std::endl;
cmd();

memset(num,sizeof(num),0);
}

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