hdu 1166 敌兵布阵 树状数组 模板题
2011-04-05 13:48
253 查看
这题是树状数组入门的一模板题,非常基础,被小白成为"赤裸裸"的入门题,哈哈,一个plus,一个sum全部搞定
#include<stdio.h> #include<string.h> #define lowbit( x ) ( x )&( -x ) int tree[50024],num,n; void plus( int num,int x ) { while( x <= n ) { tree[x] += num; x += lowbit( x ); } } int sum( int x ) { int sum = 0; while( x ) { sum += tree[x]; x -= lowbit( x ); } return sum; } int main( ) { int t; char str[100]; scanf( "%d",&t ); int k = t; while( k-- ) { memset( tree,0,sizeof( tree ) ); scanf( "%d",&n ); for( int i = 1; i <= n; ++i ) { scanf( "%d",&num ); plus( num,i ); //第i个增加了NUM人 } int r = 1; while( scanf( "%s",str ),str[0] != 'E' ) { int a,b; scanf( "%d%d",&a,&b ); switch( str[0] ) { case 'A': plus( b,a ); break; case 'S': plus( -b,a ); break; case 'Q': if( r ) printf( "Case %d:\n",t - k ); r = 0; printf("%d\n",sum( b ) - sum( a - 1 )); break; } } } return 0; }
相关文章推荐
- HDU 1166.敌兵布阵【线段树】【树状数组】【4月27】
- 【树状数组 + 简单题】杭电 hdu 1166 敌兵布阵
- HDu1166敌兵布阵(树状数组)
- hdu 1166 敌兵布阵 树状数组求区间和和修改点的值
- HDU 1166 敌兵布阵(树状数组,线段树)
- HDU-1166- 敌兵布阵(树状数组 插点问线)
- HDU 1166 敌兵布阵【树状数组】
- hdu 1166 敌兵布阵(水...线段树&&树状数组)
- HDU 1166 敌兵布阵(树状数组||线段树单点更新)
- HDU 1166 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵 (树状数组)
- HDU 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵(树状数组,基础)
- HDU 1166 树状数组 敌兵布阵
- hdu_1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵【树状数组】
- HDU 1166 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵【线段树Or树状数组】
- [树状数组] HDU 1166 敌兵布阵