zoukankan      html  css  js  c++  java
  • hdu 1166 敌兵布阵 (线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=1166

    最基础的线段树,单点更新。完全跟着HH的代码风格写的。

    code:

    #include<cstdio>
    #define lson l, m, rt<<1
    #define rson m+1, r, rt<<1|1
    const int maxn = 50005 ;
    int sum[maxn<<2] ;
    void PushUp(int rt){
        sum[rt] = sum[rt<<1] + sum[rt<<1|1] ;
    }
    void build(int l, int r, int rt){
        if(l==r){
            scanf("%d", &sum[rt]) ;
            return ;
        }
        int m = (l + r) >> 1 ;
        build(lson) ;
        build(rson) ;
        PushUp(rt) ;
    }
    void update(int p, int add, int l, int r, int rt){
        if(l==r){
            sum[rt] += add ;
            return ;
        }
        int m = (l + r) >> 1 ;
        if(p<=m)    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 sum[rt] ;
        }
        int m = (l + r) >> 1 ;
        int ret = 0 ;
        if(L<=m)    ret += query(L, R, lson) ;
        if(R>m)     ret += query(L, R, rson) ;
        return ret ;
    }
    int main(){
        int t=1, T, n, i, j, a, b ;
        char str[10] ;
        scanf("%d", &T) ;
        while(T--){
            scanf("%d", &n) ;
            build(1, n, 1) ;
            printf("Case %d:\n", t++) ;
            while(1){
                scanf("%s", str) ;
                if(str[0]=='E'break ;
                scanf("%d%d", &a, &b) ;
                if(str[0]=='A') update(a, b, 1, n, 1) ;
                else if(str[0]=='S') update(a, -b, 1, n, 1) ;
                else printf("%d\n", query(a, b, 1, n, 1)) ;
            }
        }
        return 0 ;} 
  • 相关阅读:
    MySQL表之间的关系概述
    网路通信简介
    多态与鸭子类型
    组合与类继承
    类与对象的属性与方法以及封装
    对象与类的初始
    2018.12.12
    2018.12.9浮动布局,盒子显隐,定位,z-index,流式布局,小米开头
    2018.12.8浮动布局,display总结,overflow,清浮动
    2018.12.7边界圆角redius,背景图设置,平铺,精灵图,盒子伪类索引
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2491157.html
Copyright © 2011-2022 走看看