线段树模板

模板 - 线段树 ACM-ICPC模板 懒惰标记 一行序列,每次操作把一个区间里的每个数都加上一个数,或者查询一个区间的和。 typedef long long ll; typedef pair<int,int> PII; const int INF = 0x3f3f3f3f; const int N = 1e5+7; const int M = 2007; struct SegmentTree{ int l,r; ll sum;//总和 ll lz_add;//增量延迟标记 阅读详情
#include<cstdio>
#include<algorithm>
using namespace std;
#define L o<<1
#define R (o<<1)|1
struct Node
{
	int l,r,sum,Max,Min;
}Tree[1000<<2];
void PushUp(int o)
{
	Tree[o].sum = Tree[o*2].sum + Tree[o*2+1].sum;
	Tree[o].Max = max(Tree[o*2].Max,Tree[o*2+1].Max);
	Tree[o].Min = min(Tree[o*2].Min,Tree[o*2+1].Min);
}
void Build(int o,int l,int r)
{
	//首先记录l和r的值 
	Tree[o].l = l;
	Tree[o].r = r;
	if (l == r)		//到达最底层,递归终止
	{
		int t;
		scanf ("%d",&t);		//输入数据 
		Tree[o].sum = Tree[o].Max = Tree[o].Min = t;		//更新节点数据 
		return;
	}
	int mid = (l+r) >> 1;		//找到中间节点 
	Build(o*2 , l , mid);		//递归建左子树 
	Build(o*2+1 , mid+1 , r);		//递归建右子树 
	PushUp(o);		//更新当前节点的值 
}
void UpDate(int o,int l,int r,int x,int y)		//把x节点更新为y
{
	if (l == r)		//递归结束
	{
		Tree[o].Max = Tree[o].Min = Tree[o].sum = y;		//精确找到了节点,更新 
		return;
	}
	int mid = (l+r) / 2;		//找到中间位置
	if (x <= mid)
		UpDate(o*2,l,mid,x,y);		//找左子树 
	else
		UpDate(o*2+1,mid+1,r,x,y);		//找右子树 
	PushUp(o);		//更新当前节点 
}
int QuerySum(int o,int l,int r,int x,int y)		//查找x到y的和 
{
	if (l == x && r == y)		//如果恰好是当前节点,就返回 
	{
		return Tree[o].sum;
	}
	int mid = (l + r) / 2;
	if (mid >= y)		//全在左边 
		return QuerySum(o*2,l,mid,x,y);
	else if (x > mid)		//全在右边 
		return QuerySum(o*2+1,mid+1,r,x,y);
	else		//一半在左一半在右 
		return QuerySum(o*2,l,mid,x,mid) + QuerySum(o*2+1,mid+1,r,mid+1,y);
}
int QueryMax(int o,int l,int r,int x,int y)
{
	if(x == l && y == r){
		return Tree[o].Max;
	}
	int mid = (l + r) / 2;
	if(mid >= y){
	    return QueryMax(o*2,l,mid,x,y); 
    } 
    else if(mid < x){
    	return QueryMax(o*2 + 1,mid+1,r,x,y);
	}
	else {
		return max(QueryMax(o*2,l, mid, x, mid),QueryMax( o*2 + 1, mid+1, r, mid+1, y));
	}
}
int QueryMin(int o,int l,int r,int x,int y)
{
	if(x == l && y == r){
		return Tree[o].Min;
	}
	int mid = (l + r) / 2;
	if(mid >= y){
	    return QueryMin( o*2, l, mid, x, y); 
    } 
    else if(mid < x){
    	return QueryMin( o*2 + 1, mid+1, r, x, y);
	}
	else {
		return min(QueryMin( o*2, l, mid, x, mid),QueryMin( o*2 + 1, mid+1, r, mid+1, y));
	}
}
int main()
{
	int n;
	scanf ("%d",&n);
	Build(1,1,n);
//	UpDate(1,1,n,2,7);
    QuerySum(1,1,n,2,4);
    QueryMax(1,1,n,2,4);
    QueryMin(1,1,n,2,4);
	printf ("Sum:%d   Max:%d   Min:%d\n",QuerySum(1,1,n,2,4),QueryMax(1,1,n,2,4),QueryMin(1,1,n,2,4));
	return 0;
}

PCB设计实践(三十二)PCB设计遇到大电流时的设计技巧 本文系统阐述10A至数百安培PCB设计的六大关键技术。载流能力优化强调铜厚选择(2-4oz)、线宽计算及并联结构;热管理提出散热孔阵列、铜基板嵌入等方案;布局策略包括功率分区和低阻抗路径设计;材料工艺推荐铝基板、陶瓷基板等高效解决方案;安全设计涵盖电气隔离与保护电路;验证环节需结合热仿真与实测。典型150A电机驱动板案例显示,通过4oz铝基板、散热孔阵列等设计,可实现温升≤45℃的稳定运行。核心在于铜厚线宽协同、主动散热及严格验证。 阅读详情

相关推荐

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

线段树【模板整理】

  初学线段树,参考博客链接https://blog.youkuaiyun.com/zearot/article/details/52280189 另外附上一道裸的线段树模板题帮助理解https://blog.youkuaiyun.com/tigerisland45/article/details/81322976(一个数组实现) 感谢两位博主   模板: #define maxn 100007 //元素...

安稳~的博客 454

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 339

【模板】我自己的线段树

自用线段树模板,如果你觉得有用就学习学习吧~

A's World 287

GEE AI: 利用 Satellite Embedding 语义搜索快速识别研究区目标斑块

摘要 本文介绍了一种基于Google Earth Engine的遥感语义搜索技术,利用Satellite Embedding数据集快速识别目标地物。该方法通过将光谱信息转化为高维向量,在武汉市的案例中展示了如何:1)定义研究区和样本点;2)加载预处理的Embedding数据;3)计算向量相似度;4)结合面积过滤优化结果。相比传统监督分类,该技术具有响应快速(无需模型训练)、抗季节干扰和精准界定等优势,特别适用于森林碳储量监测和土地利用检测等应用场景。文中提供了完整的GEE代码实现流程,包括样本定义、相似度计

此星光明博客 625

正版63棋牌源代码游戏+728游戏全套带前端源代码解析

这俩天抽时间仔细看了一下这套项目包含完整的前端、后端及后台管理系统。从上传的截图可以看出,前端基于资源目录,后端采用和,后台管理界面提供数据查询与管理功能。本篇文章将从前端结构、后端接口、数据库设计、常见 BUG 及优化方法等方面逐步拆解,并给出相应的代码示例和实践经验。

aa2031171的博客 3592

刘汝佳 线段树模板

一、线段树(点修改) update

远古小山的专栏 1万+

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5634

线段树 - 模板

线段树板子0: #include<cstdio> #include<iostream> #define ll long long #define _for(i,a,b) for(ll i = (a);i < (b); ++i) using namespace std; const ll maxn = 1e5+5; void build_tree(ll arr[],ll tree[],ll node,ll start,ll end){ //printf("Start : %

Spike的秃头之路 199

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 731

【电机应用控制】——步进电机控制原理(四相五线/两相四线/细分驱动)&驱动器&梯形/S形加减速算法&直线/圆弧插补

步进电机是一种把电脉冲信号转换为角位移(左)或线位移(右)的电动机。两相通常1.8°,三相通常1.2°、无相通常0.72°,角位移=脉冲个数X步距角。在非超载且不超频的情况下,电机的旋转位置只取决于脉冲个数,转速只取决脉冲信号的频率。所以只需要统计脉冲个数和频率,不再需要编码器测速和位置,具有优秀的开环能力,当然也可接编码器反馈速度和位置数据,实现更加精准的闭环控制。永磁式动态性能好,输出力矩大,但步距角大通常7.5°;反应式(磁阻式)结构简单成本低,步距角小一般1.2°,但振动噪音大动态性能差;

weixin_51658186的博客 5万+

线段树 模板题 笔记

线段树 模板题 笔记

flyhigh521949的博客 648

SXU-软件项目管理-朱少民-第九章 项目监控与控制 第十章 项目收尾 附相关习题

软件项目管理-朱少民-第九章 项目监控与控制 附相关习题

weixin_63597914的博客 1489

线段树模板整理

综述线段树的原理:将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为少量特定的子区间,通过对这些少量子区间的修改或者统计,来实现快速对[L,R]的修改或者统计。 作用:对编号连续的一些点的区间信息进行修改或者统计操作 主要操作:区间查询、点更新、区间更新 时间复杂度:修改和统计的复杂度都是O(log(N))由原理可以看出线段树维护的信息必须满足区间加法

歪歪T的拿金之路 8120

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

线段树模板1

#include<stdio.h> const int MAXN =2e5+5; typedef long long ll; //次模板一般用于大数据,开long long int numbers[MAXN]; struct node{ int l=0,r=0;//左 右结点 int val=0;//该点的值 }tree[MAXN*4]; // /* 模板大意:对n个数,...

AXKDD6555的博客 457

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

线段树--模板

线段树的命名tree线段树的创建 build线段树的查询 query10月4日的线段树模板(现更新)问题:不够简洁#include&lt;iostream&gt; using namespace std; const int maxind=256; int segTree[maxind*4+10]; int array[maxind]; bool flag=false; inline min(in...

kala0的博客 356

线段树 模板之求和

本人水平有限,题解不到为处,请多多谅解 本蒟蒻谢谢大家观看 题目: Problem A: 线段树之Sum Time Limit:1 SecMemory Limit:128 MBSubmit:187Solved:130[Submit][Status][Web Board] Description 给定一数列,规定有两种操作,一是修改某个元素,二是...

167

【模板】线段树

【模板】线段树本篇博文只有模板,emmm。 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。——摘自百度百科 因此,线段树是一种复杂度极为优秀(

Mashiro_ylb的博客 586

线段树模板(对应洛谷一道线段树模板题)

*最近正好在学线段树,搞懂后写一篇博客记录一下模板,供日后自己学习参考*

MrJinNEU的博客 437

线段树 模板题整理

线段树模板题整理 (基于洛谷OJ) 1.P3372 【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 kk。 求出某区间每一个数的和。 输入格式 第一行包含两个整数 n, mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 nn 个用空格分隔的整数,其中第 ii 个数字表示数列第 ii 项的初始值。 接下来 mm 行每行包含 33 或 44 个整数,表示一个操作,具体如下: 1 x y k:将区间 [x, y][x,y] 内每个数加上 kk。 2

雪岩的博客 2532
上一篇: The Triangle
下一篇: Fibonacci
☞十一
博客等级 码龄9年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值