/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2011 panyanyany All rights reserved.
URL : http://acm.hdu.edu.cn/showproblem.php?pid=1166
Name : 1166 敌兵布阵
Date : Sunday, September 18, 2011
Time Stage : half an hour
Result:
4622505 2011-09-18 14:51:36 Accepted 1166
31MS 412K 1406 B
C++ pyy小号
Test Data :
Review :
第二次做,理解了树状数组的原理,其实是很简单的
//----------------------------------------------------------------------------*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAXSIZE 50001
int tcase, n ;
int tree[MAXSIZE] ;
int lowbit (int x)
{
return (x) & (-x) ;
}
void add (int pos, int val)
{
while (pos <= n)
{
tree[pos] += val ;
pos += lowbit (pos) ;
}
}
int getSum (int x)
{
int sum = 0 ;
while (x > 0)
{
sum += tree[x] ;
x -= lowbit (x) ;
}
return sum ;
}
int main ()
{
char str[20] ;
int i, j ;
int x, y ;
while (scanf ("%d", &tcase) != EOF)
{
for (j = 1 ; j <= tcase ; ++j)
{
memset (tree, 0, sizeof (tree)) ;
scanf ("%d", &n) ;
for (i = 1 ; i <= n ; ++i)
{
scanf ("%d", &x) ;
add (i, x) ;
}
printf ("Case %d:\n", j) ;
while (scanf ("%s", str), *str != 'E')
{
scanf ("%d%d", &x, &y) ;
if (*str == 'Q')
printf ("%d\n", getSum (y) - getSum (x - 1)) ;
else if (*str == 'A')
add (x, y) ;
else if (*str == 'S')
add (x, -y) ;
}
}
}
return 0 ;
}
分享到:
相关推荐
杭州电子科技大学ACM培训课件 来自杭电ACM官方论坛 拿来和大家分享一下 想到有些朋友论坛积分不够 现在特地拿来免费供大家下载 希望对ACM初学者能够有所帮助
一个十分简单的程序,能够ac杭电hdu的第2050题,无注释,简单明了
计算机网络复习大纲_杭电hdu.pdf
计算机网络复习大纲_杭电hdu借鉴.pdf
计算机网络复习大纲_杭电hdu整理.pdf
计算机网络复习大纲_杭电hdu参考.pdf
杭电ACM1005题源代码,AC了的程序,无问题……
题面 【题目描述】 有nnn个营地,已知每个营地的人数,有四条命令: (1)Add(1) Add(1)Add iii jjj,iii和jjj为正整数,表示第iii个营地增加jjj个人(jjj不超过303030) (2)Sub(2)Sub(2)Sub iii jjj ,iii和jjj为正...
杭电ACMhdu1163
ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下
hdu 1166线段树代码
杭电hdu acm资料所用杭电的acm题
hdu 1166线段树
离线OJ题库(HDU ZJU等,部分有答案),需联网。
HDU2000至2099题的题目以及AC代码(含思路) 适合刚刚接触ACM的同学哦~ emmmm凑字
杭电acm 第1090题的.cpp文件
压缩包包含十份报告,已经通过验收,实验内容:交换机、生成树、静态路由、NAT等完全根据教材实验要求