美文网首页
洛谷P3374线段树 单点增减 区间求和

洛谷P3374线段树 单点增减 区间求和

作者: httpsbao | 来源:发表于2019-03-10 23:20 被阅读0次

题目传送 洛谷P3374

#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
int sum[maxn*4],a[maxn];
int N,M,ans,b,c;
char s[10];//若输入的操作标志为字符,也应按照字符串去输入,否则char一个字符会读入回车和空格,可能爆内存。
int build(int l,int r,int root){  //递归建树
    if(l==r)return sum[root]=a[l];
    else{
        int mid=(l+r)/2;
        return sum[root]=build(l,mid,root*2)+build(mid+1,r,root*2+1);
    }
}
void updt(int l,int r,int root){//单点加减
    sum[root]+=c;
    if(l==r)return;
    else{
        int mid=(l+r)/2;
        if(b<=mid)updt(l,mid,root*2);
        if(b>=mid+1)updt(mid+1,r,root*2+1);
    }
}
int query(int l,int r,int root){//区间求和
    if(b<=l&&c>=r)return ans+=sum[root];
    else{
        int mid=(l+r)/2;
        if(b<=mid)query(l,mid,root*2);
        if(c>=mid+1)query(mid+1,r,root*2+1);
    }
    return ans;
}
int main(){
    scanf("%d%d",&N,&M);
    for(int i=1;i<=N;i++)
        scanf("%d",&a[i]);
    build(1,N,1);
    for(int j=1;j<=M;j++){
        scanf("%s%d%d",s,&b,&c);
        if(s[0]=='1'){
            updt(1,N,1);
        }
        if(s[0]=='2'){
            ans=0;
            query(1,N,1);
            printf("%d\n",ans);
        }
    }
    return 0;
}

左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方

相关文章

  • 洛谷P3374线段树 单点增减 区间求和

    题目传送 洛谷P3374 左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位...

  • 三种一维树状数组

    单点修改+区间查询 最基本的树状数组 树状数组入门 模板(洛谷P3374 【模板】树状数组1) 区间修改+单点查询...

  • 线段树 + 树状数组 + ST表 模板

    线段树 区间修改+区间求和 logN 树状数组 区间求和+单点修改 logN ST表 离线查询区间最值 构造Nlo...

  • 线段树模板题总结(1)

    本专题总结了线段树的各种应用,参考了胡浩大佬的文章,把代码全部改成了自己的风格。 功能:单点增减,区间求和参考例题...

  • 算法模板(七) 线段树

    线段树单点操作 线段树区间操作

  • 线段树

    一、线段树建树、单点修改、区间查询 二、线段树建树、区间修改、区间查询

  • 各类线段树模板

    1.用数组维护线段树,可实现单点修改和区间查询。

  • 线段树

    专题 B线段树求逆序对 C[] D 区间不同值求和

  • Java 算法 - 约翰的生意(线段树)

    题意 样例 1.解题思路   这是一道非常典型的线段树题。之前我也做过类似的题,Java 算法-区间求和I(线段树...

  • 数据结构-线段树

    线段树定义: 线段树是一种二叉搜索树,又叫区间树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个...

网友评论

      本文标题:洛谷P3374线段树 单点增减 区间求和

      本文链接:https://www.haomeiwen.com/subject/ahlmpqtx.html