洛谷3372线段树模板题 对区间+k或者查询区间和
- #include<bits/stdc++.h>
- using namespace std;
- typedef unsigned int ui;
- typedef long long ll;
- typedef unsigned long long ull;
- #define pf printf
- #define mem(a,b) memset(a,b,sizeof(a))
- #define prime1 1e9+7
- #define prime2 1e9+9
- #define pi 3.14159265
- #define lson l,mid,rt<<1
- #define rson mid+1,r,rt<<1|1
- #define scand(x) scanf("%llf",&x)
- #define f(i,a,b) for(int i=a;i<=b;i++)
- #define scan(a) scanf("%d",&a)
- #define dbg(args) cout<<#args<<":"<<args<<endl;
- #define pb(i) push_back(i)
- #define ppb(x) pop_back(x)
- #define inf 0x3f3f3f3f
- #define maxn 100005
- int n,m,t;
- ll sum[maxn<<],add[maxn<<];
- void pushup(int rt)//上拉
- {
- sum[rt]=sum[rt<<]+sum[rt<<|];
- }
- void build(int l,int r,int rt)
- {
- if(l==r)
- {
- scanf("%lld",&sum[rt]);
- return ;
- }
- int mid=l+r>>;
- build(lson);
- build(rson);
- pushup(rt);//上拉,维护区间和
- }
- void pushdown(int rt,int ln,int rn)//lazy tag下推
- {
- if(add[rt])
- {
- add[rt<<]+=add[rt];//+=表示该段原先可能就有没有下推的lazy tag
- add[rt<<|]+=add[rt];
- sum[rt<<]+=add[rt]*ln;//一旦lazy tag加到这段区间上就代表区间的sum是准确更新过的
- sum[rt<<|]+=add[rt]*rn;
- add[rt]=;//lazytag完成转移
- }
- }
- void update(int l,int r,int rt,int L,int R,ll C)
- {
- if(L<=l&&r<=R)
- {
- add[rt]+=C;//tag到达之处维护的值也相对应的更新
- sum[rt]+=C*(r-l+);
- return;
- }
- int mid=l+r>>;
- //在更新子结点之前下推标记,保证更新直到最终结点之前的结点lazytag全部下推
- pushdown(rt,mid-l+,r-mid);
- if(L<=mid) update(lson,L,R,C);
- if(R>mid) update(rson,L,R,C);
- pushup(rt);//更新完子节点之后在更新父节点整个update才结束
- }
- ll query(int l,int r,int rt,int L,int R)
- {
- if(L<=l&&r<=R)
- {
- return sum[rt];
- }
- int mid=l+r>>;
- pushdown(rt,mid-l+,r-mid);
- ll ans=;
- if(L<=mid) ans+=query(lson,L,R);
- if(R>mid) ans+=query(rson,L,R);
- return ans;
- }
- int main()
- {
- //freopen("P3372_2.txt","r",stdin);
- //freopen("output.txt","w",stdout);
- std::ios::sync_with_stdio(false);
- scan(n);scan(m);
- build(,n,);
- int flag,l,r;
- ll k;
- while(m--)
- {
- scan(flag);
- if(flag==)
- {
- scanf("%d%d%lld",&l,&r,&k);
- update(,n,,l,r,k);
- }
- else if(flag==)
- {
- scan(l);scan(r);
- pf("%lld\n",query(,n,,l,r));
- }
- }
- }
洛谷3372线段树模板题 对区间+k或者查询区间和的更多相关文章
- 洛谷P3372线段树模板1——线段树
题目:https://www.luogu.org/problemnew/show/P3372 线段树模板. 代码如下: #include<iostream> #include<cst ...
- 洛谷P3373线段树模板2
题目:https://www.luogu.org/problemnew/show/P3373 带乘的线段树,更新时把加的标记也乘一下,然后取值时先乘后加. 代码如下: #include<iost ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
- hdu1823(二维线段树模板题)
hdu1823 题意 单点更新,求二维区间最值. 分析 二维线段树模板题. 二维线段树实际上就是树套树,即每个结点都要再建一颗线段树,维护对应的信息. 一般一维线段树是切割某一可变区间直到满足所要查询 ...
- [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...
- HDU 1698 Just a Hook (线段树模板题-区间求和)
Just a Hook In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
- 洛谷P3372线段树1
难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...
- POJ - 3264 线段树模板题 询问区间最大最小值
这是线段树的一个模板题,给出一串数字,然后询问区间的最大最小值. 这个其实很好办,只需把线段树的节点给出两个权值,一个是区间的最小值,一个是区间的最大值,初始化为负无穷和正无穷,然后通过不断地输入节点 ...
随机推荐
- IP地址0.0.0.0表示什么
参考RFC文档: 0.0.0.0/8 - Addresses in this block refer to source hosts on "this"network. Addre ...
- UMD: 通用模块规范
既然CommonJs和AMD风格一样流行,似乎缺少一个统一的规范.所以人们产生了这样的需求,希望有支持两种风格的“通用”模式,于是通用模块规范(UMD)诞生了.
- 创建Cocoapods私有库
本文以自己在公司做的一个手势密码私有库GesturePasswordKit为例说明. 1.在gitlab(或者github,我这里使用的例子是在gitlab上)上创建git仓库 (确保授权正确,避免后 ...
- iOS自动化登录测试demo
<软件自动化测试开发>出版了 测试开发公开课培训大讲堂 微信公众号:测试开发社区 测试开发QQ群:173172133 咨询QQ:7980068 咨询微信:zouhui1003it
- Tian Tian 菾菾 导游 陪同
自画像系列是梵高的代表作之一,他是一位自学成才的画家,下笔完全自由,主观提取了当时印象派画家学到的技巧,在这幅画中,我们可以看到,颜色在画中的堆叠,色彩与笔在画中表现的形态,都表现出,梵高在他作画中内 ...
- 从谷歌到脸书:为何巨头纷纷“钟情于”VR相机?
VR的火爆,自然无需多言.而基于VR这一个概念,已经在多个相关行业不断衍生出新的产品.服务或内容.VR眼镜.VR头盔.VR相机.VR游戏.VR影视.VR应用--但VR产业的发展并不是齐头并进,而是出现 ...
- Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定
一.说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼.本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring ...
- Java反射,泛型在Json中的运用
最近项目中遇到了Json数据自动获取的功能,不然令人想起java的反射,已经很长时间没复习java了正好一块连java的这一块内容一起过一遍.java中的反射无疑就相当于java开发者的春天,在众多的 ...
- unittest实战(四):用例编写
import yamlimport unittestfrom selenium import webdriverimport timefrom ddt import ddt, data, unpack ...
- Javascript学习笔记-基本概念-操作符
1.一元操作符 (1)递增和递减操作符 只能操作一个值的操作符叫一元操作符. var age = 29; ++age; var age = 29; --age; var age = 29; var a ...