线段树(区间更改,区间查最值)模板

线段树(区间更改,区间查最值)模板

主要重在理解线段树,理解了怎么改都可以,还有以后不要直接抄模板,要写出自己想的一份代码

&代码:

#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
const int maxn = 1e5 + 7;
struct nd {int l, r, v, lz;
} seg[maxn << 2];
int n;
inline void pushup(int rt) {seg[rt].v = max(seg[rt << 1].v, seg[rt << 1 | 1].v);
}
void pushdown(int rt) {if(seg[rt].lz) {seg[rt << 1].lz += seg[rt].lz;seg[rt << 1 | 1].lz += seg[rt].lz;seg[rt << 1].v += seg[rt].lz;seg[rt << 1 | 1].v += seg[rt].lz;seg[rt].lz = 0;}
}
void bulid(int b = 1, int e = n, int rt = 1) {seg[rt].l = b;seg[rt].r = e;if(b == e) {seg[rt].v = 0;return ;}int m = b + e >> 1;bulid(b, m, rt << 1);bulid(m + 1, e, rt << 1 | 1);pushup(rt);
}
void update(int l, int r, int xx, int b = 1, int e = n, int rt = 1) {if(l <= b && e <= r) {seg[rt].lz += xx;seg[rt].v += xx;return ;}pushdown(rt);int m = b + e >> 1;if(l <= m)update(l, r, xx, b, m, rt << 1);if(r > m)update(l, r, xx, m + 1, e, rt << 1 | 1);pushup(rt);
}
int query(int l, int r, int b = 1, int e = n, int rt = 1) {if(l <= b && e <= r) {return seg[rt].v;}pushdown(rt);int m = b + e >> 1;int re = 0;if(l <= m)re = max(re, query(l, r, b, m, rt << 1));if(r > m)re = max(re, query(l, r, m + 1, e, rt << 1 | 1));return re;
}
int main() {freopen("E:1.in", "r", stdin);n = 10;bulid();update(3, 5, 1);update(3, 5, 1);update(3, 5, 1);update(5, 6, 1);update(2, 8, 1);printf("%d\n", query(1, 10));printf("%d\n", query(5, 6));printf("%d\n", query(1, 3));printf("%d\n", query(1, 2));for(int i = 0; i < 100; i++) {if(seg[i].l) {printf("id=%d [%d , %d] val = %d  lz = %d\n", i, seg[i].l, seg[i].r, seg[i].v, seg[i].lz);}}return 0;
}

转载于:https://www.cnblogs.com/s1124yy/p/6838958.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D项目开发一点经验

我们主要使用3dsmax2010进行制作&#xff0c;输出FBX的类型导入Unity3D中。默认情况下&#xff0c;3dsmax8可以和U3D软件直接融合&#xff0c;自动转换为FBX物体。 注意事项如下&#xff1a; 1.面数控制 在MAX软件中制作单一GameObject物体的面数不能超过65000个三角形&#xf…

leetcode 142. 环形链表 II(set/快慢指针)

给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有…

html5 支持表格吗,html5 – 在HTML 5中使用表格很好吗?

简单规则 – 使用表格表格数据&#xff0c;使用其他元素进行演示(使用CSS设计布局)&#xff0c;如div&#xff0c;section&#xff0c;aside&#xff0c;nav等。这为他们所持有的内容提供了意义&#xff0c;而不是为所有内容使用表事实是&#xff0c;开发人员在90年代使用了表格…

css网格_我如何记住CSS网格属性

css网格The syntax for CSS Grid is foreign and hard to remember. But if you can’t remember CSS Grid’s syntax, you won’t be confident when you use CSS Grid.CSS Grid的语法是外来的&#xff0c;很难记住。 但是&#xff0c;如果您不记得CSS Grid的语法&#xff0c;…

2017年读书计划(一)

前言 这篇博文就暂时不记录技术了&#xff0c;记录下生活。对自己今年2017年做个读书计划安排。 最近在看一部网络剧 - 《花间提壶方大厨》&#xff0c;也许你们会感觉我很无聊&#xff0c;我也是被头条带坏了&#xff0c;每天上班一个小时的地下交通-地铁&#xff0c;就借助上…

.net10个必备工具

1.NUnit 编写单元测试的工具2.NDoc 自动生成代码文档的工具3.NAnt 编译解决方案的工具4.CodeSmith 自动生成代码的工具5.FxCop 检查你的代码是否按照规范编写的工具6.Snippet Compiler 编译少量代码的工具7.ASP.NET Version Switcher Visual Studio .NET Project Conve…

音标

音标 oror ds念子音&#xff0c;ts念s音

leetcode 530. 二叉搜索树的最小绝对差(中序遍历)

给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。示例&#xff1a;输入&#xff1a;1\3/2输出&#xff1a; 1解释&#xff1a; 最小绝对差为 1&#xff0c;其中 2 和 1 的差的绝对值为 1&#xff08;或者 2 和 3&#xff09;。代…

计算机排线知识,一种计算机排线梳理装置制造方法及图纸

【技术实现步骤摘要】一种计算机排线梳理装置本技术涉及计算机排线梳理&#xff0c;具体涉及一种计算机排线梳理装置。技术介绍计算机俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑计算&#xff0c;还具有…

github和pypi_如何将GitHub用作PyPi服务器

github和pypiI was looking for a hosted private PyPi Python Package server, that used credentials that the team already has (such as GitHub).我正在寻找一个托管的私有PyPi Python Package服务器&#xff0c;该服务器使用了团队已经拥有的凭据(例如GitHub)。 I didn’…

数据结构与算法---查找算法(Search Algorithm)

查找算法介绍 在java中&#xff0c;我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找斐波那契查找1)线性查找算法 示例&#xff1a; 有一个数列&#xff1a; {1,8, 10, 89, 1000, 1234} &#xff0c;判断数列中是否包含此名称【顺序查找】 要求: 如果找到了&a…

Exchange Server 2007邮箱存储服务器的集群和高可用性技术(上)

高可用性矩阵-->见下图:邮箱服务器高可用性目标: 数据可用性-->保护邮箱数据免于失败和损坏服务可用性-->提高群集实效转移操作 简化群集管理 支持地理分散的群集 支持低成本大邮箱(GB)使用户可以基于业务需要更好的选择容错方案提高解决方案的可用性使用解决方案可…

【C/C++开发】C++实现字符串替换的两种方法

替换字符串replace() erase()//C 第一种替换字符串的方法用replace()|C 第二种替换字符串的方法用erase()和insert()【 Cstring|C replace()|C erase()|C insert()|C自定义替换字符串函数】#include<string> #include<iostream> using namespace std;//第一种替换字…

html设置按钮样式变为椭圆,css border-radius圆形变为椭圆形,位置:绝对

我正在围绕字体真棒图标创建一个圆圈。我的问题是&#xff0c;当我添加position: absolute圆成为一个椭圆。css border-radius圆形变为椭圆形&#xff0c;位置&#xff1a;绝对同样的情况&#xff0c;如果我是设置display: block这里是什么&#xff0c;我想实现的图像 -CONRADU…

《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习

说明&#xff1a; 《火球——UML大战需求分析》是我撰写的一本关于需求分析及UML方面的书&#xff0c;我将会在CSDN上为大家分享前面几章的内容&#xff0c;总字数在几万以上&#xff0c;图片有数十张。欢迎你按文章的序号顺序阅读&#xff0c;谢谢&#xff01;本书已经在各大网…

金陵科技学院计算机开设课程,金陵科技学院各专业介绍

各专业介绍会计学专业(四年制本科) 金融学专业(四年制本科)财务管理专业(四年制本科) 国际经济与贸易专业(四年制本科)市场营销专业(四年制本科)国际商务专业(三年制专科)物流管理专业(三年制专科) 对外汉语专业(四年制本科)古典文献(古籍修复)专业(四年制本科)行政管理(高级秘…

【jQuery Demo】图片由下至上逐渐显示

无意中看到如何实现一张图片从下往上慢慢显现出来这个问题&#xff0c;弄了半天还是从上往下的效果&#xff0c;纠结了&#xff0c;最后还是提问人自己搞定了&#xff01;不过哈哈&#xff0c;又学到一点知识&#xff01; 1.下面是我自己做的效果(按钮可以点哦) 图片由下至上逐…

Morphia - mongodb之ORM框架

一、简介 二、注解 1、Entity 2、Id3、Indexed4、Embedded5、Transient和Property6、Reference 三、示例 四、参考资料 Morphia快速入门 Morphia 注解详解 使用Morphia框架操作mongodb 使用 Morphia 和 MongoDB 实现持久化 Spring中Mongodb的java实体类映射 ORM框架Morphia的学…

石头剪刀布游戏web_Web开发教程-剪刀石头布

石头剪刀布游戏webThis web development tutorial shows how to use JavaScript, HTML, and CSS to create a rock Paper Scissors Game in the browser.这份网络开发教程展示了如何使用JavaScript&#xff0c;HTML和CSS在浏览器中创建石头剪刀布游戏。 Tenzin explains every…

两个数之和等于第三个数

这是一个很好的算法题&#xff0c;解法类似于快速排序的整理方法。同时&#xff0c;更为值得注意的是这道题是 人人网2014校园招聘的笔试题&#xff0c;下面首先对题目进行描述&#xff1a; 给出一个有序数组&#xff0c;另外给出第三个数&#xff0c;问是否能在数组中找到两个…