给出N个整数A1,A2,..,Av,你需要处理区间加,区间求和。
输入格式
第一行两个整数N和Q(1≤N,Q≤105)。
第二行N个整数,表示A1,A2...Av(|A;≤109)的初始值。
接下来Q行,每行一个操作:
cabc,表示Aa,Aa+1…Ab每个数加c(lcl≤10000)。
Qab,表示询问Aa,Aa+1..Ab的和,答案可能超过32位整数。
输出格式
对于所有Q询问,一行输出一个答案。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
/*区间更新,区间加值--区间求和*/const int MAX_N = 1e5+5;
ll s[4 * MAX_N],col[4 * MAX_N];
int n,q;//父节点合并
void up(int p){s[p] = s[p * 2] + s[p * 2 + 1];
}//向下更新一层  区间更新使用延迟更新的思想提高效率
void down(int p, int l, int r){if(col[p]){int mid = (l + r) / 2;s[p * 2] += col[p] * (mid - l + 1);s[p * 2 + 1] += col[p] * (r - mid);col[p * 2] += col[p];col[p * 2 + 1] += col[p];col[p] = 0;}
}//更新
void modify(int p,int l,int r,int x,int y,int c){if(x <= l && r <=y){s[p] += (r - l + 1) * c; //对父结点修改 如何是求区间最值而不是求和该如何修改呢? col[p] += c; //标记子节点需要延迟更新 return;}down(p, l, r);//向下更新一层 int mid = (l + r)/2;if(x <= mid){modify(p * 2, l, mid, x, y, c);}if(y > mid){modify(p * 2 + 1, mid + 1,r,x,y,c);}up(p);
}//查询
ll query(int p,int l,int r,int x,int y){if(x <= l && r <= y){return s[p];}down(p,l,r);//如果没有return,这时子节点必须更新了  就向下更新一层int mid = (l + r) / 2;ll res = 0;if(x <= mid){res += query(p * 2, l,mid,x,y);}if(y > mid){res += query(p * 2 + 1,mid + 1,r,x,y);}return res;
}int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){ll d;scanf("%ld",&d);modify(1,1,n,i,i,d);}char ins;while(q--){scanf(" %c",&ins);int a,b;ll c;if(ins=='Q'){scanf("%d%d",&a,&b);printf("%lld\n",query(1,1,n,a,b));}else{scanf("%d%d%ld",&a,&b,&c);modify(1,1,n,a,b,c);}}return 0;
} 

转载于:https://www.cnblogs.com/fisherss/p/10369817.html

计蒜客:区间整数操作-区间更新-区间和相关推荐

  1. 计蒜客信息学入门赛 #16--C--最大区间包含问题--待完善

    蒜头君的工厂需要生产 nn 个产品,每个产品会在记录本上记录开始生产的时间 xx 以及完成生产的时间 yy. 现在蒜头君拿到这本记录本以后想知道最多有多少件产品同时在生产线上生产. 注意:在同一时刻总 ...

  2. 【原创】tyvj1038 忠诚 计蒜客 管家的忠诚 线段树(单点更新,区间查询)...

    [原创]tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询) 最简单的线段树之一,中文题目,不翻译.... 注释讲的比较少,这已经是最简单的线段树,如果看不 ...

  3. 计蒜客 A1634:划分整数

    计蒜客 A1634:划分整数 来源:计蒜客 标签:计数dp 参考资料: 相似题目: 题目 蒜头君特别喜欢数学.今天,蒜头君突发奇想:如果想要把一个正整数 n 分解成不多于 k 个正整数相加的形式,那么 ...

  4. 计蒜客 T1853:非常男女(前缀和)

    上一篇博客计蒜客 T1101:大整数的因子(高精度除法详解)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.这篇博客来记录一下计蒜客T18 ...

  5. 计蒜客 - 蒜头君的任务

    计蒜客 蒜头君的任务 题目描述 蒜头君的上司给蒜头君布置了一个任务,蒜头君维护一个数列,要求提供以下两种操作: 查询操作. 语法:Q L 功能:查询当前数列中末尾 L L L 个数中的最大的数,并输出 ...

  6. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

  7. 计蒜客题解——T1214:鸣人和佐助

    题目相关 题目链接 计蒜客 OJ,https://nanti.jisuanke.com/t/T1214. 题目描述 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置.地图上的每个位置都可以走到 ...

  8. 计蒜客:密码锁---bfs

    计蒜客:密码锁-bfs 题目描述: 现在一个紧急的任务是打开一个密码锁.密码由四位数字组成,每个数字从1到9进行编号.每次可以对任何一位数字加1或减1.当将9加1时,数字变为1,当1减1时,数字变为9 ...

  9. 计蒜客 -- 常用STL题解

    1.计蒜客 – 打印锯齿矩阵 问题描述 锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如: 3 5 2 6 1 2 3 4 1 6 2 7 读入若干对整数 (x,y),表示在第 x 行的末尾加上一个 ...

  10. 计蒜客题解——T1157:派

    题目相关 题目链接 计蒜客,https://nanti.jisuanke.com/t/T1157. 我的OJ,http://47.110.135.197/problem.php?id=4951. 题目 ...

最新文章

  1. 辽宁交通高等专科学校计算机专业,辽宁省交通高等专科学校怎么样 全国排名第几...
  2. 05_数据的特征处理,归一化,标准化、缺失值处理,以及案例,使用场景,处理办法等
  3. java---Listener Filter知识点学习
  4. php 管理 mysql 数据库 代码_PHP5对Mysql5的任意数据库表的管理代码示例(三)
  5. 中的数组怎么转成结构体_传说中的“衡水体”应该怎么练?
  6. Specification for springger thesis Writing
  7. 物联网中C语言与汇编语言,ARM Cortex-M架构CPU中C语言和汇编语言的混合编程
  8. 08Vue.js快速入门-Vue综合实战项目
  9. python内容限制_Python --类,实例和访问限制
  10. rocketmq存储消息mysql_消息中间件—RocketMQ消息存储(一)
  11. [PKUWC2018] Minimax
  12. 小米手机5s简单刷成开发版获得ROOT权限的方法
  13. 如何查看自己的电脑硬盘是不是固态硬盘
  14. 6. 【containerd】containerd已经停止,containerd-shim还存在?
  15. 国外注册的域名要不要备案?
  16. 字体设计中的表现手法(一)
  17. android mock测试资源,Android测试基础整理篇
  18. 【Moasure魔尺】一款来自未来科技的测量设备
  19. 【五校联考2015 9.5】我才不是萝莉控
  20. java计算机毕业设计中医药科普网站源码+mysql数据库+系统+部署+lw文档

热门文章

  1. [吴恩达机器学习笔记]16推荐系统5-6协同过滤算法/低秩矩阵分解/均值归一化
  2. php数组操作,内容相同,键值不同,互换
  3. Android中Java与web通信
  4. ThinkPHP中create()方法自动验证表单信息
  5. windows环境tomcat8配置Solr5.5.1
  6. HTML中的select只读
  7. Away3D 的实体收集器流程2
  8. Windows Phone 7 Tips (8)
  9. 【BMC_patrol常见问题汇总】Console License生成
  10. Wordpress 太过牛