【题目描述】:如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和
【输入描述】:第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含3或4个整数,表示一个操作,具体如下:操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k操作2: 格式:2 x y 含义:输出区间[x,y]内每个数的和
【输出描述】:输出包含若干行整数,即为所有操作2的结果。
【样例输入】:5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4【样例输出】:11
8
20【时间限制、数据范围及描述】:时间:1s 空间:128M对于30%的数据:N<=8,M<=10对于70%的数据:N<=1000,M<=10000对于100%的数据:N<=100000,M<=100000(数据保证在int64/long long数据范围内)Code:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<map>
using namespace std;
const int N=2000005;
long long k,c[N],sum[N],addv[N];
int n,m,i,f,x,y;
void build(int o,int l,int r){addv[o]=0;if(l==r){sum[o]=c[l];}else{int mid=(l+r)>>1;int lson=o<<1;int rson=lson|1;build(lson,l,mid);build(rson,mid+1,r);sum[o]=sum[lson]+sum[rson];}
}
void push_down(int o,int l,int r,int mid,int lson,int rson){addv[lson]=addv[lson]+addv[o];addv[rson]=addv[rson]+addv[o];sum[lson]=sum[lson]+(mid-l+1)*addv[o];sum[rson]=sum[rson]+(r-mid)*addv[o];addv[o]=0;
}
void addall(int o,int l,int r,int a,int b,long long x){if(l>=a&&r<=b){addv[o]=addv[o]+x;sum[o]=sum[o]+(r-l+1)*x;return;}else{int mid=(l+r)>>1;int lson=o<<1;int rson=lson|1;if(addv[o]){push_down(o,l,r,mid,lson,rson);}if(a<=mid){addall(lson,l,mid,a,b,x);}if(b>mid){addall(rson,mid+1,r,a,b,x);}sum[o]=sum[lson]+sum[rson];}
}
long long query(int o,int l,int r,int a,int b){if(l>=a&&r<=b){return sum[o];}else{int mid=(l+r)>>1;int lson=o<<1;int rson=lson|1;long long ans=0;if(addv[o]){push_down(o,l,r,mid,lson,rson);}if(a<=mid){ans+=query(lson,l,mid,a,b);}if(b>mid){ans+=query(rson,mid+1,r,a,b);}return ans;}
}
int main(){scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%lld",&c[i]);}build(1,1,n);for(i=1;i<=m;i++){scanf("%d",&f);switch(f){case 1:{scanf("%d%d%lld",&x,&y,&k);addall(1,1,n,x,y,k);break;}case 2:{scanf("%d%d",&x,&y);printf("%lld\n",query(1,1,n,x,y));break;} }}return 0;
}
UOJ #53.线段树区间修改
转载于:https://www.cnblogs.com/ukcxrtjr/p/11206763.html
相关文章:

Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9
Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9 MP4 |视频:h264,1920x1080 |音频:aac,44100 Hz |时长:16h:06分钟|文件大小:4.75 GB 流派:电子学习|语言:英语 云桥网络 平台 获取 教程 本课程详细介绍了blender 4个案…

android mac测试地址,android获取有线网的Mac地址
Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式。1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对。private String getMacAddress(){String strMacAddr null;try {Inet…

[高中作文赏析]感受冬天
转载于:https://www.cnblogs.com/zhangzujin/p/4864725.html

2022-2028年中国文化产业园投资分析及前景预测报告(全卷)
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国文化行业市场行业相关概述、中国文化行业市场行业运行环境、分析了中国文化行业市场行业的…

matlab 降维工具箱
Matlab Toolbox for Dimensionality Reduction降维方法包括:Principal Component Analysis (PCA) • Probabilistic PCA • Factor Analysis (FA) • Sammon mapping • Linear Discriminant Analysis (LDA) • Multidimensional scaling (MDS) • Isomap •…

程序还没写完只能当然计算器用,先发过来用着后面的慢慢写
真的是没办法,只好先发上来用着,后面的要先处理事情,等处理完接着写!! http://files.cnblogs.com/mari/starco.rar 这个是地址!!!转载于:https://www.cnblogs.com/mari/archive/2004/12/22/80317.html

Servlet生命周期与工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1&#…

ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4
ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G 语言:英语中英文字幕(根据原英文字幕机译更准确) 面部动画&虚幻引擎4中的更多内容 信息…

android c聊天功能,Android实现简单C/S聊天室应用
Android的网络应用:简单的C/S聊天室,供大家参考,具体内容如下服务器端:提供两个类创建ServerSocket监听的主类:MyServer.java负责处理每个Socket通信的线程类:ServerThread.java客户端:是一个Android应用程序>Multi…

docker 容器访问宿主机的解决方式
需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务。 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip是会动态改变的,并不能保证永久不变。因此…

WinAPI: 输入光标相关的函数[3]
为什么80%的码农都做不了架构师?>>> 本例测试修改光标的形色, 效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTForm1 class(TForm)RadioGr…

用泛型方法Java从实体中提取属性值,以及在泛型方法中的使用
public <T> T getFieldValue(Object target, String fieldName, Class<T> typeName){try {Object fieldValue FieldUtils.readField(target, fieldName, true);return (T)fieldValue;} catch (IllegalAccessException e) {log.error("出错:实体类{}没有{}类型…

藤本植物和攀爬植物模型包 Globe Plants – Bundle 23 – Vines and Creepers 03 (3D Models)
藤本植物和攀爬植物模型包 Globe Plants – Bundle 23 – Vines and Creepers 03 (3D Models) 全球植物–第23束–藤本植物和攀缘植物03 (3D模型) 大小解压后:1.73G 云桥网络 平台huo取素材 这个捆绑包23包括15种3D藤本植物和攀缘植物,用于一般的景观…

蘑菇模拟器TV版 for Android,安卓NES模拟器TV版下载
NES Emulator TV精选了上千款经典的红白机小游戏,我们小时候玩过的经典游戏都能够在这里找到,每一款游戏在这里都能够分别存档,没有太多时间的上班族可以尝试一下,给玩家带来最好的游戏体验。软件简介NES模拟器精选上千款红白机游…

由Node.js事件驱动模型引发的思考
引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来。 什么是Node.…

2022-2028年中国未硫化橡胶制品行业市场运行格局及未来前景展望报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国未硫化橡胶制品行业市场行业相关概述、中国未硫化橡胶制品行业市场行业运行环境、分析了中…

使用 TListView 控件(3)
为什么80%的码农都做不了架构师?>>> 本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 class(TForm)ListView1: TListView;Button…

POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的。其实根据之前那道炮兵阵地就不应该写的,但是总觉得自己的思路会好一些&#x…

Blender基础入门学习教程 Learning Blender from Scratch
Blender基础入门学习教程 Learning Blender from Scratch 流派:电子学习| MP4 |视频:h264,1280720 |音频:aac,48000 Hz 语言:英语中英文字幕(根据原英文字幕机译更准确)|大小:5.5 GB |时长:7h 28m 你会学到什么 云…

android 事件冒泡,Android事件分发
当用户触摸屏幕时,系统会对触摸事件做出相应的相应,这个事件会产生一个MotionEvent,系统根据一定的规则将其传递给View进行处理,这个过程就是事件分发机制了。事件的传递分为两个阶段,即捕获阶段和冒泡阶段。捕获阶段&…

sqlserver trigger
1 --2 -- Create database trigger template 3 --4 USE [EasyJobExTest]5 GO6 7 --判断触发器是否存在,存在则删除8 IF EXISTS(9 select top 1 t.name as trigger_name,a.name as table_name from sys.triggers t,sys.objects a 10 where Lower(a.name)section and t.paren…

jenkins+sonarqube流水线脚本模板
pipeline { //这个任务在哪个主机上运行 //agent any//将这个项目运行在slave上 agent { label node1 }//参数化构建,主要设定git_version变量的值 parameters { string(name: git_version, defaultValue: v1.1, description: 选择你要部署的tag??) }stages { //整个部署的任…

苹果手机在火车站被偷的状况下如何定位找回
苹果手机在火车站被偷的状况下如何定位找回。首先打开“itunes”,选择菜单栏的“文件”-“将文件添加到资料库”选择要做铃声的歌曲,单击“打开”歌曲会出现在“资料库”的“音乐”里右击歌曲,选择“显示简介”选择“选项”填上“起始时间”和…

Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender
Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender CGCookie——Blender纹理基…

14/10/校内测试{天天考,丧心病狂}
1, 给定平面上n个OIer和n台电脑,每个OIer只能水平向右和竖直向下,找到一台电脑写代码,其花费为OIer与电脑之间的曼哈顿距离(|x_i-x_j||y_i-y_j|)。求出使n个OIer均找到自己电脑的最小花费。 输入输出格式 Input/output 输入格式&a…

android 图标拖动不了,拖动式选项卡(仿android) 添加了上下拉刷新后,下拉即刷新,而不是滚动到顶后再刷新,同时还想问一下正在刷新的图标怎么移到选项卡下...
这是我的HTML代码.mui-control-content {background-color: white;min-height: 600px;}.mui-control-content .mui-loading {margin-top: 50px;}新闻音乐sport第一个选项卡子项-1第一个选项卡子项-2第一个选项卡子项-3第一个选项卡子项-4第一个选项卡子项-5第一个选项卡子项-6第…

2022-2028年中国卫星互联网产业深度调研及投资前景预测报告(全卷)
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国卫星互联网行业市场行业相关概述、中国卫星互联网行业市场行业运行环境、分析了中国卫星互…

Rhel6-heartbeat配置文档
系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.122.25 server25.example.com 所需的包:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm 以下…

Java getBytes字符集问题
今天工作中又一次遇到了java字符集问题,这次是由getBytes方法导致的。 以前的时候,曾经很多次的解决过java字符集以及乱码的问题,以为对这块很了解了,至到今天的又一次深入的学习,才发现以前的认识当中存在的问题&am…

Blender未来科幻武器全流程制作视频教程
Blender 2.9 建模、UV、创建PBR纹理、照明和渲染全面学习视频教程 时长17h 30m 1280X720 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) 大小:15.3G 含项目素材 Blender完成PBR艺术创作:科幻板条箱和炮塔 云桥网络 平台hu…