zoukankan      html  css  js  c++  java
  • HDU1166 敌兵布阵

    简单线段树,单点更新,区间查询,自下向上更新结点的信息~

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn=1e6+14;
    struct node {
        int l;
        int r;
        int sum;
    }segTree[maxn*3];
    int num[maxn];
    void build (int i,int l,int r) {
        segTree[i].l=l;
        segTree[i].r=r;
        if (l==r) {
            segTree[i].sum=num[l];
            return;
        }
        int mid=(l+r)>>1;
        build (i<<1,l,mid);
        build (i<<1|1,mid+1,r);
        segTree[i].sum=segTree[i<<1].sum+segTree[i<<1|1].sum; 
    } 
    void add (int i,int t,int b) {
        segTree[i].sum+=b;
        if (segTree[i].l==t&&segTree[i].r==t) return;
        int mid=(segTree[i].l+segTree[i].r)>>1;
        if (t<=mid) add (i<<1,t,b);
        else add (i<<1|1,t,b); 
    }
    int query (int i,int l,int r) {
        if (l==segTree[i].l&&r==segTree[i].r) return segTree[i].sum;
        int mid=(segTree[i].l+segTree[i].r)>>1;
        if (r<=mid) return query(i<<1,l,r);
        else if (l>mid) return query(i<<1|1,l,r);
        else return query(i<<1,l,mid)+query(i<<1|1,mid+1,r);
    }
    int main () {
        int T;
        int ans=0;
        int n;
        int a,b;
        char s[maxn];
        scanf ("%d",&T);
        while (T--) {
            ans++;
            scanf ("%d",&n);
            for (int i=1;i<=n;i++) scanf ("%d",&num[i]);
            build (1,1,n);
            printf ("Case %d:
    ",ans);
            while (scanf("%s",s)) {
                if (strcmp(s,"End")==0) break;
                scanf ("%d %d",&a,&b);
                if (strcmp(s,"Add")==0) add(1,a,b);
                else if (strcmp(s,"Sub")==0) add(1,a,-b);
                else printf ("%d
    ",query(1,a,b));
            } 
        }
        return 0;
    }
  • 相关阅读:
    善战者无赫赫之功,善医者无煌煌之名
    得到一个空值
    涡轮五字诀
    自定义的泛型类和泛型约束
    数据的格式化
    纸上得来终觉浅,绝知此事要躬行
    DateTime有默认构造函数吗?
    委托,语言级别的设计模式
    有想象力才有进步
    初始的设计思路
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12306644.html
Copyright © 2011-2022 走看看