zoukankan      html  css  js  c++  java
  • 加强树状数组luogu3368

    暴力树状数组30分,这该怎么办;

    知识点回顾

    差分数组中

    开头结尾改变了值之后

    求他的前缀,发现区间内所有数都改变

    然后我们做差分树状数组


    #include<cstdio>
    using namespace std;
    int n,m;
    int c[501010];
    int lowbit(int x){
        return x&-x; 
    }
    void update(int i,int x){
        while(i <= n){
            c[i] += x;
            i += lowbit(i);    
        }
    }
    int sum(int x)
    {
        int sum = 0;
        while(x){
            sum += c[x];
            x -= lowbit(x);    
        } 
        return sum;
    }
    int main()
    {
        scanf("%d%d",& n,& m);
        int x, y, z, k; 
        for(int i = 1;i <= n;++ i){
            scanf("%d",& x); 
            update(i,x),update(i+1,-x); 
        }
        while(m-- ){
            scanf("%d",& z);
            if(z == 2){
                scanf("%d",& x);
                 printf("%d
    ",sum(x));
            }else{
                   scanf("%d%d%d",& x,& y,& k);
                   update(x, k);update(y+1, -k);
            }
        }
        return 0;
    }
  • 相关阅读:
    适配器
    策略
    oom的各种情况
    sql 优化//TODO
    聚簇索引和非聚簇索引
    Shard内部原理
    es集群健康状态
    转载 R语言颜色基础设置
    三维数据的展示
    python 文件保存 出错
  • 原文地址:https://www.cnblogs.com/dsrdsr/p/8987095.html
Copyright © 2011-2022 走看看