读书人

【树状数组 + 容易题】杭电 hdu 1166

发布时间: 2012-10-06 17:34:01 作者: rapoo

【树状数组 + 简单题】杭电 hdu 1166 敌兵布阵

/* 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: 46225052011-09-18 14:51:36Accepted116631MS412K1406 BC++pyy小号    Test Data :Review :第二次做,理解了树状数组的原理,其实是很简单的//----------------------------------------*/#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#define MAXSIZE 50001int 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 (){charstr[20] ;inti, j ;intx, 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 ;}

读书人网 >编程

热点推荐