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;
    }
  • 相关阅读:
    天文望远镜(二)
    天文望远镜(一)
    安静
    JavaScript 私有类字段和 TypeScript 私有修饰符
    js解析剪切板里的excel内容
    js正则
    jquery扩展方法:实现模拟Marquee无限循环滚动
    js中onload和ready区别
    Js如何从字符串中提取数字?
    JSBridge 初探
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12306644.html
Copyright © 2011-2022 走看看