当前位置: 首页 > news >正文

线段树入门:区间更新

区间更新

若对区间的每个点都进行更新,则时间复杂度较高,可以引入懒操作。

对 区间进行更新,例如将 区间的所有元素都更新为 ,步骤如下。

(1)若当前节点的区间被查询区间 覆盖,则仅对该节点进行更新并做懒标记,表示该节点已被更新,对该节点的子节点暂不更新。

(2)判断是在左子树中查询还是在右子树中查询。在查询过程中,若当前节点带有懒标记,则将懒标记下传给子节点 (将当前节点的懒标记清除,将子节点更新并做懒标记),继续查询。

(3)在返回时更新最值。

区间更新的代码实现如下:

void lazy(int x,int v){ t[x].val=v; //更新最值 t[x].lazy=v; //做懒标记 } void pushdown(int x){ if(t[x].lazy){ lazy(2*k,t[x].lazy); lazy(2*k+1,t[x].lazy); t[x].lazy=-1; } } void update(int x,int l,int r,int v){ //将[l,r]区间所有元素更新为v if(t[x].l>=l&&t[x].r<=r){ //找到该区间 lazy(x,v); //更新并做懒标记 return; } if(t[x].lazy!=-1) //懒标记下传 pushdown(x); int mid=(t[x].l+t[x].r)>>1; if(l<=mid) update(x*2,l,r,v); if(r>mid) update(x*2+1,l,r,v); t[x].val=min(t[x*2].val,t[x*2+1].val); }

例如当我们用 这一组数创建线段树之后,对 区间更新为 ,如图所示:

另外,带有懒标记的区间查询和普通的区间查询不同,在查询过程中若遇到有节点带有懒标记,则下传懒标记,继续查询。

代码实现如下:

int query(int x,int l,int r){ if(t[x].l>=l&&t[x].r<=r){ //当前区间被查询区间完全覆盖,直接返回 return t[x].val; } if(t[x].lazy!=-1) pushdown(x); //下传懒标记 int mid=(t[x].l+t[x].r)>>1; int res=inf; //设定一个非常大的值 if(l<=mid) //在左区间查询 res=min(res,query(x*2,l,r)); if(r>mid) //在右区间查询 res=min(res,query(x*2+1,l,r)); return res; }
http://www.jsqmd.com/news/876567/

相关文章:

  • Rocky Linux 9 SSH迁移实战:OpenSSH 8.7兼容性与FIPS加固指南
  • 图像做 DCT:揭秘那个让像素“开口说话“的数学魔法
  • 影刀RPA跨境店群运营架构:Python高并发协同与Chromium多账号环境隔离实战
  • 3步完成SQLite到MySQL数据库迁移:智能转换工具实战指南
  • 终极指南:5分钟掌握ncmdumpGUI,免费解锁网易云NCM音乐文件
  • ColorControl深度解析:一站式解决Windows显示控制与智能设备联动的完整方案
  • QKeyMapper终极指南:免费开源按键映射工具,5分钟让你的键盘鼠标手柄随心所欲
  • 从零到实战:20个STM32项目带你玩转RoboMaster开发板
  • 软件工程中机器学习应用的研究、评审与教学实践反思
  • 小红书下载神器XHS-Downloader:3分钟解锁隐藏的高级玩法
  • 免费视频字幕提取终极指南:3分钟快速提取多语言硬字幕
  • 哔哩下载姬DownKyi完整教程:从零掌握B站视频下载高效方案
  • Legacy iOS Kit终极指南:5个核心技巧实现旧款iOS设备高效降级与越狱
  • Applite:3分钟搞定macOS应用管理的终极图形化解决方案
  • 解锁Switch隐藏潜能:Atmosphere如何让游戏体验焕然一新
  • 抖音音频下载终极指南:3分钟搞定无损音乐批量提取,效率提升95%
  • Windows热键冲突终极解决方案:Hotkey Detective一键定位占用程序完整指南
  • MorphoCopter:变形四旋翼无人机设计与控制技术
  • 新手入门Taotoken从注册到获取APIKey的完整步骤
  • 机器学习评估实战:从数据划分、指标选择到统计显著性验证
  • Windows 10/11打印服务总自动停止?别慌,试试这5个修复步骤(附注册表清理指南)
  • 5分钟搭建私有抖音无水印解析服务:DouYinBot全功能指南
  • LoRA微调实战2026:从零到生产的完整工程指南
  • 在多轮对话应用中感受Taotoken提供的高稳定性与低延迟
  • Thorium浏览器:面向企业级部署的技术选型与架构决策指南
  • 从Windows开发到Ubuntu 22.04部署:手把手解决JODConverter + LibreOffice的Linux环境乱码与进程管理难题
  • DS4Windows终极方案:DualShock 4在PC平台的完全指南
  • 如何快速掌握哔哩下载姬:免费高效的B站视频下载完全指南
  • Zotero PDF Translate:跨语言研究的技术架构与工作流革命
  • C#中实现值相等(Value Equality)的详细步骤