hdu1166-敌兵布阵(线段树)
2013-08-16 19:10
183 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1166
区间更新,区间求和
区间更新,区间求和
// File Name: hdu1166.cpp // Author: bo_jwolf // Created Time: 2013年08月16日 星期五 11时27分03秒 #include<vector> #include<list> #include<map> #include<set> #include<deque> #include<stack> #include<bitset> #include<algorithm> #include<functional> #include<numeric> #include<utility> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> using namespace std; #define lson l , mid , rt << 1 #define rson mid + 1 , r , rt << 1 | 1 const int maxn = 55555 ; //int sum[ maxn << 2 ] ; struct node { int sum ; }tree[ maxn << 2 ] ; void PushUp( int rt ) { tree[ rt ].sum = tree[ rt << 1 ].sum + tree[ (rt << 1 | 1 ) ].sum ; } void build( int l , int r , int rt ) { if( l == r ) { scanf( "%d" , &tree[ rt ].sum ); return ; } int mid = ( l + r ) >> 1 ; build( lson ) ; build( rson ) ; PushUp( rt ) ; } void update( int p , int add , int l , int r , int rt ) { if( l == r ) { tree[ rt ].sum += add ; return ; } int mid = ( l + r ) >> 1 ; if( p <= mid ) update( p , add , lson ) ; else update( p , add , rson ) ; PushUp( rt ) ; } int query( int L , int R , int l , int r , int rt ) { if( L <= l && r <=R ) { return tree[ rt ].sum ; } int mid = ( l + r ) >> 1 ; int ret = 0 ; if( L <= mid ) ret += query( L , R , lson ) ; if( R > mid ) ret += query( L , R , rson ) ; return ret ; } int main() { int T , n ; scanf( "%d" , &T ) ; for( int cas = 1 ; cas <= T ; ++cas ) { printf( "Case %d:\n" , cas ) ; scanf( "%d" , &n ) ; build( 1 , n , 1 ) ; char op[ 10 ] ; while( scanf( "%s" , op ) ) { if( op[ 0 ] == 'E' ) break ; int a , b ; scanf( "%d%d" , &a , &b ) ; if( op[ 0 ] == 'Q' ) printf( "%d\n" , query( a , b , 1 , n , 1 ) ) ; else if( op[ 0 ] == 'S' ) update( a , -b , 1 , n , 1 ) ; else update( a , b , 1 , n , 1 ) ; } } return 0; }
相关文章推荐
- hdu1166 敌兵布阵 【线段树】
- hdu1754 I Hate It && hdu1166 敌兵布阵 ——线段树复习
- HDU1166:敌兵布阵(线段树单点更新)
- hdu1166(敌兵布阵)(线段树经典题)
- HDU1166 敌兵布阵(线段树)
- 【生活没有希望】hdu1166敌兵布阵 线段树
- hdu1166 敌兵布阵 线段树 点更新
- 线段树 hdu1166 (敌兵布阵)
- hdu1166 敌兵布阵(线段树 求区间和 更新点)
- AC的第一个线段树 HDU1166 敌兵布阵
- HDU1166:敌兵布阵(线段树)
- HDU1166 敌兵布阵(线段树)
- HDU1166 敌兵布阵 (树状数组 | 线段树)
- HDU1166_敌兵布阵(线段树/单点更新)
- hdu1166 敌兵布阵(树状数组 && 线段树单点更新)
- 先冷静一下 线段树单点更新HDU1166 敌兵布阵
- Hdu1166 敌兵布阵 [分块][树状数组][线段树]
- HDU1166:敌兵布阵(线段树以及单点更新)
- hdu1166 敌兵布阵-----(线段树)
- 敌兵布阵(hdu1166)(线段树基础题)