这是一道模板题

线段树介绍https://www.cnblogs.com/nvwang123/p/10420832.html

 #include<bits/stdc++.h>
using namespace std;
int m,n;
int a[]; struct node{
int l,r;
long long w,f; //w是区间值,f是懒标记
}xds[*]; //4倍空间 //一、建树
void buid(int l,int r,int k){
xds[k].l=l;
xds[k].r=r;
if(l==r){
xds[k].w=a[l]; // 最底层的区间从左边开始是1,所以可以这样
return;
}
int m=(l+r)/;
buid(l,m,*k);
buid(m+,r,*k+);
xds[k].w=xds[*k].w+xds[*k+].w;//不要忘记区间和上传!!特别容易忘
} //二、懒标记下传
void down(int k){
xds[*k].w+=xds[k].f*(xds[*k].r-xds[*k].l+);
xds[*k+].w+=xds[k].f*(xds[*k+].r-xds[*k+].l+);
xds[*k].f+=xds[k].f;
xds[*k+].f+=xds[k].f;
xds[k].f=;//易漏
} //三、区间修改
void add_(int x,int y,int k,int a){
if(xds[a].l>=x&&xds[a].r<=y){
xds[a].w+=(long long)k*(xds[a].r-xds[a].l+);
xds[a].f+=k; //易漏 ,记得做懒标记
return;
}
if(xds[a].f) down(a);//!!!
int m=(xds[a].l+xds[a].r)/;
if(x<=m) add_(x,y,k,a*);
if(y>m) add_(x,y,k,a*+);
xds[a].w=xds[a*].w+xds[a*+].w;
} long long ask_(int x,int y,int k) //注意数据范围内,开int只能得70分
{
if (xds[k].l>=x&&xds[k].r<=y)
return xds[k].w; if(xds[k].f) down(k); int m=(xds[k].l+xds[k].r)/;
long long ans=;
if(x<=m) ans+=ask_(x,y,k*);
if(y>m) ans+=ask_(x,y,k*+);
return ans;
} int main(){
cin>>n>>m; for(int i=;i<=n;i++) cin>>a[i];
buid(,n,); for(int i=;i<=m;i++){
int a,x,y,k;
cin>>a;
if(a==) cin>>x>>y>>k,add_(x,y,k,);
if(a==) cin>>x>>y,cout<<ask_(x,y,)<<endl;
}
return ;
}

洛谷 P3372 线段树1的更多相关文章

  1. 洛谷P3372线段树模板1——线段树

    题目:https://www.luogu.org/problemnew/show/P3372 线段树模板. 代码如下: #include<iostream> #include<cst ...

  2. 洛谷P3372线段树1

    难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...

  3. NOIP2017提高组Day2T3 列队 洛谷P3960 线段树

    原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...

  4. 洛谷P3373线段树模板2

    题目:https://www.luogu.org/problemnew/show/P3373 带乘的线段树,更新时把加的标记也乘一下,然后取值时先乘后加. 代码如下: #include<iost ...

  5. 洛谷P3373 线段树2(补上注释了)

    毒瘤题.找了一下午+晚上的BUG,才发现原来query_tree写的是a%p; 真的是一个教训 UPD:2019.6.18 #include<iostream> #include<c ...

  6. 洛谷3372线段树模板题 对区间+k或者查询区间和

    #include<bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ll; ty ...

  7. 洛谷P3372/poj3468(线段树lazy_tag)(询问区间和,支持区间修改)

    洛谷P3372 //线段树 询问区间和,支持区间修改 #include <cstdio> using namespace std; struct treetype { int l,r; l ...

  8. 洛谷1087 FBI树 解题报告

    洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...

  9. 洛谷P3018 [USACO11MAR]树装饰Tree Decoration

    洛谷P3018 [USACO11MAR]树装饰Tree Decoration树形DP 因为要求最小,我们就贪心地用每个子树中的最小cost来支付就行了 #include <bits/stdc++ ...

随机推荐

  1. 性能测试工具LoadRunner01-性能测试基础

    什么是性能测试? 在一定的约束条件下(指定的软件.硬件.网络环境等)对产品按一定的性能指标进行测试,确定系统能承受的最大负载压力,解决性能瓶颈.给用户最好的体验. 性能测试流程? 什么时候开始性能测试 ...

  2. [转]asp.net URL中包含中文参数造成乱码的解决方法

    本文转自:http://www.jb51.net/article/22437.htm 问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:htt ...

  3. If you are tired...

    如果你累了 1. 深呼吸 放松身体,深呼吸五分钟. 2. 听音乐 静静地听几首歌放松一下就好了,比如王豪学长推荐的追梦赤子心,骄傲的少年. 3. 冥想 放松身体,处于冥想状态. 4. 干洗脸.鸣天鼓. ...

  4. pat1093. Count PAT's (25)

    1093. Count PAT's (25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng The strin ...

  5. Day3下

    少女[问题描述]你是能看到第一题的 friends呢.—— hja少女在图上开车, 她们希望把每条边分配给与其相连的点中一个并且每个点最多被分配一条边,问可能的方案数.[输入格式]第一行两个整数

  6. 自定义input文件上传 file的提示文字及样式

    简单记录一下 效果图: 代码: <input class="aload" type='button' value='上传附件' onClick='javascript:$(& ...

  7. hibernate课程 初探一对多映射2-1 一对多映射简介

    1 在数据库中用主外键的形式实现一对多的映射关系 2 hibernate 在一方设置集合set,表示多方

  8. SSM环境下配置log4j输出sql和异常到控制台和本地日志文件中

    1.引入日志依赖包 <!--解决Spring使用slf4j输出日志与log4j冲突的问题--> <dependency> <groupId>org.slf4j< ...

  9. sqlserver门户设置

    ------ insert by wandz 20180918 门户模板表 start ------set identity_insert oa_portal_template on;begin de ...

  10. 微信小程序电商实战-首页(上)

    嗨,大家好!经过近两周的精心准备终于开始微信小程序电商实战之路喽.那么最终会做成什么样呢?当然可以肯定不会只做一个静态demo哦,先把我们小程序电商实战的整体架构发出来晒一下,请看下图:   架构图. ...