#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,x,x1,y,z;
int a[100010],d[100010],c[100010];
int lowbit(int num){return num&-num;}
void add(int x,int y){
int a=x;
while(x<=n) d[x]+=y,c[x]+=(a-1)*y,x+=lowbit(x);
return;
}
int get(int x){
int ans=0,ans1=0,a=x;
while(x) ans+=d[x],ans1+=c[x],x-=lowbit(x);
return ans*a-ans1;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;++i) scanf("%ld",&a[i]),add(i,a[i]-a[i-1]);
for(int i=1;i<=m;++i){
scanf("%ld",&x);
if(x==1){
scanf("%ld%ld%ld",&x1,&y,&z);
add(x1,z);
add(y+1,-z);
}else{
scanf("%ld%ld",&y,&z);
cout<<get(z)-get(y-1)<<endl;
}
}
return 0;
}

树状数组(区间修改&&区间查询)的更多相关文章

  1. 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询

    题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...

  2. 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询

    题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...

  3. 【bzoj4540】[Hnoi2016]序列 单调栈+离线+扫描线+树状数组区间修改区间查询

    题目描述 给出一个序列,多次询问一个区间的所有子区间最小值之和. 输入 输入文件的第一行包含两个整数n和q,分别代表序列长度和询问数.接下来一行,包含n个整数,以空格隔开,第i个整数为ai,即序列第i ...

  4. 【bzoj3779】重组病毒 LCT+树上倍增+DFS序+树状数组区间修改区间查询

    题目描述 给出一棵n个节点的树,每一个节点开始有一个互不相同的颜色,初始根节点为1. 定义一次感染为:将指定的一个节点到根的链上的所有节点染成一种新的颜色,代价为这条链上不同颜色的数目. 现有m次操作 ...

  5. 1082 线段树练习 3 && 树状数组区间修改区间查询

    1082 线段树练习 3 题意: 给定序列初值, 要求支持区间修改, 区间查询 Solution 用树状数组, 代码量小, 空间占用小 巧用增量数组, 修改时在 \(l\) 处 $ + val$ , ...

  6. bzoj 3779 重组病毒 —— LCT+树状数组(区间修改+区间查询)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3779 RELEASE操作可以对应LCT的 access,RECENTER则是 makeroo ...

  7. [POJ3468]关于整数的简单题 (你想要的)树状数组区间修改区间查询

    #include <cstdio> #include <algorithm> #include <cstring> #include <cctype> ...

  8. 【bzoj3110】[Zjoi2013]K大数查询 整体二分+树状数组区间修改

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...

  9. HDU 1166 敌兵布阵 (树状数组 单点修改+区间查询)

    题目链接 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和T ...

  10. 树状数组区间更新区间查询以及gcd的logn性质

    题目描述 给你一个长为n的序列a m次查询 每次查询一个区间的所有子区间的gcd的和mod1e9+7的结果 输入描述: 第一行两个数n,m之后一行n个数表示a之后m行每行两个数l,r表示查询的区间 输 ...

随机推荐

  1. DevSecOps 安全即代码基础指南

    在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高.当谈及安全威胁,McKinsey 的一篇文章表明,云上大多数漏洞都是由于配置错误导致而非外部攻击造成底层云 ...

  2. DataLeap的全链路智能监控报警实践(三): 系统实现

    系统实现 整体架构 基线管理模块:负责基线创建.更新.删除等操作,管理基线元信息,包括保障任务,承诺时间,余量及报警配置等): 基线实例生成:系统每天定时触发生成基线实例,生成实例的同时根据保障任务, ...

  3. PPT 编辑顶点

    编辑顶点的N种玩法 针对特定的形状进行编辑 选中形状 -> 右键 -> 编辑顶点 如果[编辑顶点]是灰色的,需要上网下一个 office clean touris,清理一下 合并形状:多个 ...

  4. Docker 安装 ELK,EFK代替

    ELK 版本因为 前面 Elasticsearch 用的 7.9.3 版本,所以 kibana-7.9.3.logstash-7.9.3 都用 7.9.3 版本 安装配置 Elasticsearch ...

  5. JAVA 获取 URL 指定参数的值

    JAVA 获取 URL 指定参数的值 @Test void regexTest() { String url = "https://www.cnblogs.com/vipsoft/p/152 ...

  6. PlayWright安装及使用

    PlayWright是由业界大佬微软(Microsoft)开源的端到端 Web 测试和自动化库,可谓是大厂背书,功能满格,虽然作为无头浏览器,该框架的主要作用是测试 Web 应用,但事实上,无头浏览器 ...

  7. GDB变量值显示为< optimized_out >的解决方法

    GDB调试显示< optimized_out > 最近使用GDB调试的时候,经常遇到GDB查看变量值的时候输出< optimized_out >,Google了一下,找到几个解 ...

  8. shardingsphere 5.1.1 分库分表

    1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...

  9. KCD技术分享:以SBOM为基础的云原生应用安全治理

    随着越来越多的企业和组织将他们的应用迁移到云上,云原生技术的应用部署和管理正在变得更加灵活和高效,但也相应地引入了一些新的安全风险.2023年4月15日,由云原生计算基金会(CNCF)发起,全球各国当 ...

  10. 【调试】ftrace(二)新增跟踪点

    内核的各个子系统已经有大量的跟踪点,如果这些跟踪点无法满足工作中的需求,可以自己手动添加跟踪点. 添加跟踪点有两种方式,一种是仿照events/目录下的跟踪点,使用TRACE_EVENT() 宏添加. ...