[Python]线段树与二分法
一、先从“二分查找”说起假设你有一本按页码编号的电话簿从第1页到第100页。你想找第37页上的人名。普通查找从第1页开始翻一页一页往后翻翻到第37页。最坏情况要翻100次。二分查找先翻到中间第50页。37 50所以目标在前半本。再翻到前半本的中间第25页。37 25所以在后半本25~50之间。再翻到25~50的中间第37页。找到了。只翻了3次。这就是二分——每次把搜索范围砍掉一半。二、从“二分查找”到“树”现在问题变了你不再只是找某一页而是要频繁地查任意连续几页里人名拼音最靠后的是谁相当于最大值。比如问你“第30页到第50页之间人名拼音最靠后的是谁”如果你每次都从第30页翻到第50页一页一页比过去那就太慢了。能不能像二分查找那样提前把一些“汇总信息”存好查的时候直接拿这就是“树”要做的事情。三、画一棵“汇总树”假设我们有8个时间戳1, 2, 3, 4, 5, 6, 7, 8。每个时间戳上有一个数值。我们先把它们两两分组每组选出一个最大值第1层原始数据 时间戳: 1 2 3 4 5 6 7 8 数值: 10 5 8 3 12 7 9 4 第2层两两一组取最大值 (1,2) → max(10,5) 10 (3,4) → max(8,3) 8 (5,6) → max(12,7) 12 (7,8) → max(9,4) 9 第3层再两两一组取最大值 (1~4) → max(10,8) 10 (5~8) → max(12,9) 12 第4层最终 (1~8) → max(10,12) 12把这个过程画成树的样子(1~8): 12 / \ (1~4): 10 (5~8): 12 / \ / \ (1~2): 10 (3~4): 8 (5~6): 12 (7~8): 9 / \ / \ / \ / \ 1:10 2:5 3:8 4:3 5:12 6:7 7:9 8:4这棵树就是线段树。最下面一排是原始数据叶子节点。上面每一层都是下一层的“汇总”——两个子节点的最大值。最上面是整棵树的“总最大值”。四、用这棵树来查询现在问你“时间戳3到时间戳6之间的最大值是多少”不用一个一个看。我们从树顶往下走根节点 (1~8)太大了不完全在3~6内所以往下走。左孩子 (1~4)部分重叠3~4在范围内继续往下。右孩子 (5~8)部分重叠5~6在范围内继续往下。(1~4) 的左孩子 (1~2)完全不重叠1~2不在3~6内跳过。(1~4) 的右孩子 (3~4)完全在3~6内直接拿它的值 8。(5~8) 的左孩子 (5~6)完全在3~6内直接拿它的值 12。(5~8) 的右孩子 (7~8)完全不重叠跳过。结果max(8, 12) 12。我们只看了几个节点就得到了答案不需要遍历所有8个时间戳。五、为什么叫“动态开点”刚才的例子中我们把所有8个时间戳都画出来了。但实际题目中时间戳范围是1到10^9你不可能真的把这10亿个节点都建好——内存不够。动态开点的意思是只有当你真正用到某个时间戳时才创建它对应的节点。比如你只收到了时间戳1、5、10的数据那树就只长成这样(1~10^9) / \ (1~5 * 10^8) (5 * 10^81 ~ 10^9) / \ (1~2.5 * 10^8) (2.5 * 10^81 ~ 5 * 10^8) / \ (1~1) (2~2.5 * 10^8) | 1:10实际上树只会沿着你用到的路径生长。没用到的区间节点根本就不存在None。这就叫“动态开点”——用多少长多少。六、总结线段树到底干了什么你的问题线段树的回答我要在时间戳5上存一个值从树顶往下走找到时间戳5的叶子存进去。然后一路回溯更新沿途所有父节点的最大值。我要查时间戳3~6的最大值从树顶往下走碰到完全在3~6内的节点就直接拿值碰到完全不在的就跳过部分重叠的就继续往下。最后把所有拿到的值取最大。时间戳范围太大动态开点只用到的节点才创建不浪费内存。整个过程就是“二分思想”的延伸把一个大区间不断对半拆分每个小区间都提前算好“汇总值”。查询时通过二分快速定位到需要的小区间直接拿汇总值不用一个一个数。七、一个让你彻底理解的类比想象你是一个班主任手下有1000个学生学号从1到1000。你想随时知道任意连续学号段里最高分是多少。笨办法每次有人问你就把那个学号段的所有学生成绩翻一遍。1000个学生问1000次就是100万次操作。线段树办法你提前把所有学生按学号分组1~1000 为一组记下最高分分成两组1~500 和 501~1000分别记下最高分再分1~250、251~500、501~750、751~1000分别记下最高分……直到每个学生单独一组现在有人问“学号237到学号684的最高分是多少”你只需要看237~684覆盖了哪些“提前分好组”的区间把这些区间的最高分拿出来比一比得出答案你不需要看每一个学生的成绩只需要看几个“小组汇总”就够了。这就是线段树。

相关新闻

[Python]从“脏”数据到优雅实现:一个IoT滑动窗口最大值问题的测试驱动优化实录

[Python]从“脏”数据到优雅实现:一个IoT滑动窗口最大值问题的测试驱动优化实录

1. 引言 最近我在解决一道有趣的编程题:模拟鸿蒙IoT网关的数据采集处理器,要求支持乱序到达的数据包,并实时返回滑动窗口内的最大值。看似简单的需求,却因为“未来数据不可见”、“重复时间戳保留最大值”、“窗口内无数据返回No…

2026/8/14 8:01:32 阅读更多 →
NestJS——环境配置篇

NestJS——环境配置篇

NestJS——环境配置篇 环境变量 通过在package.json设置NODE_ENV,然后在代码中通过process.env.NODE_ENV即可拿到变量。 {..."scripts":{"start:dev": "set NODE_ENVdevelopment&& nest start --watch","start:prod": "N…

2026/8/14 12:27:57 阅读更多 →
Legacy iOS Kit:旧iPhone降级与越狱终极指南

Legacy iOS Kit:旧iPhone降级与越狱终极指南

Legacy iOS Kit:旧iPhone降级与越狱终极指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 还在为旧i…

2026/8/14 2:00:21 阅读更多 →

最新新闻

EasyMocap 三维人体动捕实战:6 个模块带你从安装一路跑到调优

EasyMocap 三维人体动捕实战:6 个模块带你从安装一路跑到调优

EasyMocap 三维人体动捕实战:6 个模块带你从安装一路跑到调优 【免费下载链接】EasyMocap Make human motion capture easier. 项目地址: https://gitcode.com/gh_mirrors/ea/EasyMocap 想给自己做一段可操控的 3D 动作数据,却被动捕设备的昂贵价…

2026/8/15 17:20:11 阅读更多 →
3分钟搞定gibMacOS:下载macOS原版系统

3分钟搞定gibMacOS:下载macOS原版系统

3分钟搞定gibMacOS:下载macOS原版系统 【免费下载链接】gibMacOS Py2/py3 script that can download macOS components direct from Apple 项目地址: https://gitcode.com/gh_mirrors/gi/gibMacOS gibMacOS 是一款开源的 macOS 原版系统下载工具:…

2026/8/15 17:20:11 阅读更多 →
让 Arduino 设备告别“迷之时间“:NTPClient 时间同步库快速上手指南

让 Arduino 设备告别“迷之时间“:NTPClient 时间同步库快速上手指南

让 Arduino 设备告别"迷之时间":NTPClient 时间同步库快速上手指南 【免费下载链接】NTPClient Connect to a NTP server 项目地址: https://gitcode.com/gh_mirrors/ntpc/NTPClient 智能插座说好晚上 8 点开灯,却在半夜两点突然亮起&a…

2026/8/15 17:20:11 阅读更多 →
从零搭建Scada-LTS监控平台:一份完整实战指南

从零搭建Scada-LTS监控平台:一份完整实战指南

从零搭建Scada-LTS监控平台:一份完整实战指南 【免费下载链接】Scada-LTS Scada-LTS is an Open Source, web-based, multi-platform solution for building your own SCADA (Supervisory Control and Data Acquisition) system. 项目地址: https://gitcode.com/g…

2026/8/15 17:20:11 阅读更多 →
中文商业设计稿免费商用不踩雷:思源宋体CN从安装到出图的完整落地流程

中文商业设计稿免费商用不踩雷:思源宋体CN从安装到出图的完整落地流程

中文商业设计稿免费商用不踩雷:思源宋体CN从安装到出图的完整落地流程 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 思源宋体CN(Source Han Serif CN&#xf…

2026/8/15 17:20:11 阅读更多 →
手写接口太慢?用DreamFactory快速生成REST API,安全数据网关一次搞定

手写接口太慢?用DreamFactory快速生成REST API,安全数据网关一次搞定

手写接口太慢?用DreamFactory快速生成REST API,安全数据网关一次搞定 【免费下载链接】dreamfactory DreamFactory is a secure, self-hosted enterprise data access platform that provides governed API access to any data source, connecting enter…

2026/8/15 17:19:11 阅读更多 →

日新闻

内景 空间站内部 中国空间站 太空 内仓

内景 空间站内部 中国空间站 太空 内仓

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 空间站内部 中国空间站 太空 内仓 地址:本地PC端运行(或Web…

2026/8/15 0:00:30 阅读更多 →
重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 当我们面对海量金融数据时,传统的数据获取方式往往让我们陷入困境—…

2026/8/15 0:00:30 阅读更多 →
一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

快消品(FMCG)是流通速度较快、竞争较为激烈的行业之一。一瓶饮料从出厂到消费者手中,往往只有几十天甚至几天的周转窗口。这决定了快消行业的仓储管理系统(WMS)与制造业、电商行业存在明显区别:它不仅需要管…

2026/8/15 0:02:30 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/15 12:59:14 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →