实用算法实现-第6篇 线段树

线段树详解 (原理,实现与应用) 线段树详解 By 岩之痕 一:综述 线段树是一种可以快速进行区间修改和区间查询的数据结构。点修改,区间修改和区间查询的复杂度都是O(log2(n)) 并且,线段树可以维护很多种类的信息。说到线段树就不得不提一下树状数组,树状数组维护的信息必须满足区间减法,因为树状数组只是维护1到X的信息,通过相减来得到区间信息,代码简单而且速度快,占用空间又少于线段树,所以一般情况下可以用树状数组的地方就 阅读详情

6.1    线段树简介

线段树的定义如下:

        一棵二叉树,记为T (a,b),参数a,b表示该结点表示区间[a,b]。区间的长度b-a记为L。递归定义T[a,b]:

        若L>1 :[a, (a+b) div 2]为 T的左儿子

                        [(a+b)div 2,b]为T的右儿子。
        若L=1 :T为一个叶子结点。


表示区间[1, 10]的线段树表示如下:



树一般有两种形式:1、以点为结点。2、以线段为结点。区别如图:上面一个以线段为结点,下面一个以点为结点:





对线段树存在:

定理:线段树把区间上的任意一条线段都分成不超过2logL条线段。

这个结论为线段树能在O(logL)的时间内完成一条线段的插入、删除、查找等工作,提供了理论依据。


对线段树的可以进行扩展。

1.  测度。结点所表示区间中线段覆盖过的长度,存储在各结点中。

2.  独立线段数。区间中互不相交的线段条数。

3.  权和。区间所有元线段的权和。


测度的递推公式如下:

                 a[j] - a[i]                                                  该结点 Count>0

M =          0                                                              该结点为叶结点且 Count=0

                 Leftchild ↑ .M + Rightchild ↑ .M         该结点为内部结点且 Count=0连续段数

这里的连续段数指的是区间的并可以分解为多少个独立的区间。如 [1 , 2] ∪[2,3]∪ [5 , 6] 可以分解为两个区间[1 , 3] 与 [5 , 6] ,则连续段数为 2 。增加一个数据域 Lines_Tree.line 表示该结点的连续段数。 Line 的讨论比较复杂,内部结点不能简单地将左右孩子的 Line 相加。所以再增加 Lines_Tree.lbd 与 Lines_Tree.rbd 域。定义如下:  

                 1   左端点 I 被描述区间盖到

lbd  = 

                 0    左端点 I 不被描述区间盖到

 

                1     右端点 J 被描述区间盖到

rbd  = 

                0     右端点 J 不被描述区间盖到

 

lbd 与 rbd 的实现:

                1  该结点 count > 0

lbd  =      0  该结点是叶结点且 count = 0

                leftchild ↑ .lbd    该结点是内部结点且 Count=0

                1  该结点 count > 0

rbd  =    0  该结点是叶结点且 count = 0

                rightchild ↑ .rbd   该结点是内部结点且 Count=0

有了 lbd 与 rbd , Line 域就可以定义了:

                1  该结点 count > 0

Line =     0  该结点是叶结点且 count =0

                Leftchild ↑ .Line  +  Rightchild ↑.Line  -  1  当该结点是内部结点且 Count=0 , Leftchild ↑ .rbd = 1 且 Rightchild ↑ .lbd = 1

                Leftchild ↑.Line  +  Rightchild ↑ .Line   当该结点是内部结点且 Count=0 , Leftchild ↑ .rbd 与 Rightchild ↑ .lbd 不都为1

6.2    利用线段树实现区间的动态插入和删除

6.2.1   实例

PKU JudgeOnline, 1151, Atlantis.

6.2.2   问题描述

在二维平面分部着一些矩形,矩形有可能重合。求矩形的总面积。

6.2.3   分析

这个题在《算法艺术与信息学竞赛》中第一章介绍数据结构时,讲到线段树的时候有解题分析。

用线段树来记载纵向上是不是被覆盖,用测度来表示区间中被覆盖了多少长度。

为了降低复杂度,可以将坐标离散化,如下图所示:

从左到右扫描长方形的左侧边和右侧边,如果是左侧边则加入线段树中,否则从线段书中删除。同时用横向扫描的距离乘以线段树的测度,就得到了扫描过了的被覆盖的面积。

本题和PKU JudgeOnline,1117, Picture题都对线段树进行了扩展。本题只用到了测度的扩展,而1117题还用到了独立线段数的扩展。

6.2.4   程序

//离散化+ 线段树+ 扫描线
//本题与JudgeOnline 1177 picture 极相似,现在回想起来甚至比1177 还要简单一些.与1177 不同的是本题中的坐标是浮点
//类型的故不能将坐标直接离散.我们必须为它们建立一个对应关系,用一个整数去对应一个浮点数
//这样的对应关系在本题的数组y[] 中
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
 
struct node{
     int st, ed,c;   //c : 区间被覆盖的层数,m: 区间的测度
     double m;
}ST[802];
struct line{
     doublex,y1,y2;   //纵方向直线, x:直线横坐标, y1 y2:直线上的下面与上面的两个纵坐标
     bools;     //s = 1: 直线为矩形的左边, s = 0:直线为矩形的右边
}Line[205];
double y[205],ty[205]; //y[] 整数与浮点数的对应数组;ty[]:用来求y[]的辅助数组
 
void build(int root, int st, int ed){
     ST[root].st = st;
     ST[root].ed = ed;
     ST[root].c = 0;
     ST[root].m = 0;
     if(ed - st> 1){
         int mid= (st+ed)/2;
         build(root*2, st, mid);
         build(root*2+1, mid, ed);
     }
}
inline void updata(int root){
     if(ST[root].c> 0)
         //将线段树上区间的端点分别映射到y[]数组所对应的浮点数上,由此计算出测度
         ST[root].m = y[ST[root].ed-1] -y[ST[root].st-1];
     else if(ST[root].ed - ST[root].st == 1)
         ST[root].m = 0;
     elseST[root].m = ST[root*2].m + ST[root*2+1].m;
}
void insert(int root, int st, int ed){
     if(st <=ST[root].st && ST[root].ed <= ed){
         ST[root].c++;
         updata(root);
         return;
     }
     if(ST[root].ed- ST[root].st == 1)return ;//不出错的话这句话就是冗余的
     int mid =(ST[root].ed + ST[root].st)/2;
     if(st <mid)
         insert(root*2, st, ed);
     if(ed >mid)
         insert(root*2+1, st, ed);
     updata(root);
}
void Delete(int root, int st, int ed){
     if(st <=ST[root].st && ST[root].ed <= ed){
         ST[root].c--;
          updata(root);
         return;
     }
     if(ST[root].ed- ST[root].st == 1)return ; //不出错的话这句话就是冗余的
     int mid =(ST[root].st + ST[root].ed)/2;
     if(st <mid)
         Delete(root*2, st, ed);
     if(ed >mid)
         Delete(root*2+1, st, ed);
     updata(root);
}
int Correspond(int n, double t){
     //二分查找出浮点数t 在数组y[]中的位置(此即所谓的映射关系)
     intlow,high,mid;
     low = 0; high = n-1;
     while(low< high){
         mid = (low+high)/2;
         if(t> y[mid])
              low = mid + 1;
         elsehigh = mid;
     }
     returnhigh+1;
}
bool cmp(line l1, line l2){
     return l1.x< l2.x;
}
 
int main()
{
     intn,i,num,l,r,c=0;
     doublearea,x1,x2,y1,y2;
     while(cin>>n,n){
         for(i =0; i < n; i++){
              cin>>x1>>y1>>x2>>y2;
              Line[2*i].x = x1; Line[2*i].y1 =y1; Line[2*i].y2 = y2; Line[2*i].s = 1;
              Line[2*i+1].x = x2; Line[2*i+1].y1= y1; Line[2*i+1].y2 = y2; Line[2*i+1].s = 0;
              ty[2*i] = y1; ty[2*i+1] = y2;
         }
         n <<= 1;
         sort(Line, Line+n, cmp);
         sort(ty, ty+n);
         y[0] = ty[0];
         //处理数组ty[]使之不含重覆元素,得到新的数组存放到数组y[]中
         for(i=num=1;i < n; i++)
              if(ty[i]!= ty[i-1])
                   y[num++] = ty[i];
         build(1, 1, num); //树的叶子结点与数组y[]中的元素个数相同,以便建立一一对应的关系
         area = 0;
         for(i =0; i < n-1; i++){
              //由对应关系计算出线段两端在树中的位置
              l = Correspond(num, Line[i].y1);
              r = Correspond(num, Line[i].y2);
              if(Line[i].s)//插入矩形的左边
                   insert(1, l, r);
              else    //删除矩形的右边
                   Delete(1, l, r);
              area += ST[1].m * (Line[i+1].x -Line[i].x);
         }
         cout<<"Testcase #"<<++c<<endl<<"Totalexplored area: ";
         cout<<fixed<<setprecision(2)<<area<<endl<<endl;
     }
     return 0;
}

6.3    计算数组区间第K大的数

PKU JudgeOnline, 2761, Feed the dogs则是线段树的另外一个应用:实用线段树来计算数组区间[i, j]中元素第k小(或第K大)的数。只要添写一个函数,根据线段树中每个结点的覆盖树木来判断第k大的树是哪一个。

当初始化,或者区间[i, j]发生变化时,需要对线段树进行添加或者删除操作。每当增加(或删除)一个大小为X的点时,就在树上添加(或删除)一条(X,MaxLen)的线段(不含端点),当要查询一个点的排名时,只要看看其上有多少条线段就可以了。

int query(int root, intcount)
{
     if(count<= ST[root].c){
         returnST[root].st;
     }else if(ST[root].ed - ST[root].st == 1){
         returnST[root].ed;
     }
     count -= ST[root].c;
     if(count<= ST[root*2+1].c){
         returnquery(root*2, count);
     }else{
         returnquery(root*2+1, count);
     }
}

1.4    实例

PKU JudgeOnline, 1151, Atlantis.

PKU JudgeOnline, 1117, Picture.

PKU JudgeOnline, 2761, Feed the dogs.

PKU JudgeOnline, 2528, Mayor'sposters.

本文章欢迎转载,请保留原始博客链接http://blog.youkuaiyun.com/fsdev/article

算法竞赛从入门到进阶pdf_【算法趣谈】线段树 从入门到进阶 前言:这是一篇笔者两年前所写的博客。如今,在线段树在脑海中即将遗忘之际,这两年前留下的文章,终于将其再次唤醒。这篇文章对于线段树的理解虽谈不上绝对深刻,但是也能详细且简明地解释其流程。因而也收获了3w+的阅读量。今日,我也将原先的博客的语言以及配图进行了一定优化,希望能对各位读者有所帮助。“线段树是什么?线段树怎么写?”如果你在考提高组前一天还在问这个问题,那么你会与一等奖失之交... 阅读详情

相关推荐

【算法】值域线段树

简单介绍值域线段树

white514的博客 2184

【学习笔记】详解线段树(浅显易懂,匠心之作,图文并茂)

超详解线段树(浅显易懂,几乎涵盖所有线段树类型讲解,匠心之作,图文并茂)

weq2011的博客 3万+

深入解析XTEA加密算法的核心机制与优化策略

本文深入解析XTEA加密算法的核心机制与优化策略,详细介绍了XTEA在嵌入式系统和资源受限环境中的优势,包括其高效的加解密速度和低资源消耗。文章还探讨了XTEA的轮函数设计、关键参数优化策略以及实战应用中的性能对比,为开发者提供了安全增强方案和优化技巧。

k8l9m0n的博客 242

算法数据结构——线段树(Segment Tree)精讲及python实现

线段树(Segment Tree):一种基于分治思想的二叉树,用于在区间上进行信息统计。它的每一个节点都对应一个区间leftright通常是整数。每一个叶子节点表示了一个单位区间(长度为1),叶子节点对应区间上。每一个非叶子节点的左子节点表示的区间都为,右子节点表示的的区间都为。线段树是一棵平衡二叉树,树上的每个节点维护一个区间。根节点维护的是整个区间,每个节点维护的是父亲节点的区间二等分之后的其中一个子区间。当有n。

白话机器学习 5171

Ollama-OCR实战:5分钟搞定PDF文档转Markdown(附qwen2.5vl模型配置)

本文详细介绍了如何利用Ollama本地部署多模态大模型qwen2.5vl,结合OCR技术,实现PDF文档到Markdown的端到端智能转换。通过解析传统OCR的局限与AI方案的优势,并提供从环境搭建、提示词工程到处理复杂表格的完整实战指南,帮助用户高效构建自动化文档处理流水线,彻底重塑文档处理工作流。

yog99的博客 606

tiny4412用 usb 连接计算机显示sec s5pc210 test b/d 解决方法

当我用USB线连接tiny4412的microUSB端口的时候,出现了驱动没有正常安装,显示“sec s5pc210 test b/d” 出现这种问题的原因有: 1、没有安装到正确的USB驱动; 2、SD卡没有插好 我出现问题的原因属于第二种,插入SD卡后,上电后,LCD屏亮了,但没有任何显示   解决方法是:     更换一张SD卡,重新插入开发板卡槽,上电开

karaskass的博客 3231

数据结构之线段树

文章目录线段树(区间树)Segment Tree线段树的概念为什么要使用线段树手写一个线段树线段树中的区间查询线段树问题 LeetCode303LeetCode307对区间进行操作的时间复杂度 线段树(区间树)Segment Tree 线段树的概念 线段树是一种特殊的树结构。这种数据结构主要用于解决“线段”或者是“区间”这种特殊的数据 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些...

qq_24095055的博客 1228

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7789

线段树(从入门到进阶)

首先,讲解线段树之前,应该了解到线段树应该是一种工具,可以将一些对于区间(或者线段)的修改、维护,从O(N)的时间复杂度变成O(logN)。 一.线段树概念引入 线段树是一种二叉树,也就是对于一个线段,我们会用一个二叉树来表示。比如说一个长度为5的线段,我们可以表示成这样: 这代表着如果你要表示线段的和,那么最上面的根节点权值就等于两个儿子节点的权值之和。 那么就可以得到:节点i的权值 = i节点的左儿子权值 + i节点的右儿子权值 二.简单线段树 三.区间+/-修改与区间查询 四.区间乘除修改与查询

hahahahahaha5的博客 2972

黑猫带你学UFS协议第23篇:UFS固件升级操作详解(FFU)

摘要:本文介绍了UFS固件更新(FFU)的实现方法与注意事项。根据UFS3.1 JEDEC协议,FFU通过write buffer命令(MODE=0Eh)下载FW固件,随后必须进行power cycle或硬件复位生效。文章详细阐述了FFU操作的10条规则,包括数据分片传输要求、寄存器访问限制等,同时指出协议未明确的厂商实现差异。关键寄存器包括bFFUTimeout、bDeviceFFUStatus和fPermanentlyDisableFwUpdate。

黑猫奥利奥的博客 1万+

大规模新闻聚合爬虫实战:Python爬取数百万新闻数据的完整指南

本文详细介绍了如何构建一个大规模新闻聚合爬虫,结合Python异步爬虫技术,实现高效、稳定的新闻数据采集。增加NLP模块对新闻内容做自动分类、情感分析。引入机器学习模型检测新闻真实性。使用分布式爬虫框架进一步提升规模。增加多媒体内容抓取与处理。

2201_76125261的博客 1554

java代码实现线段树_实用算法实现-第6篇线段树

6.1 线段树简介线段树的定义如下:一棵二叉树,记为T (a,b),参数a,b表示该结点表示区间[a,b]。区间的长度b-a记为L。递归定义T[a,b]:若L>1 :[a, (a+b) div 2]为 T的左儿子[(a+b)div 2,b]为T的右儿子。若L=1 :T为一个叶子结点。表示区间[1, 10]的线段树表示如下:树一般有两种形式:1、以点为结点。2、以线段为结点。区别如图:上...

weixin_42548782的博客 307

【YoloV8改进策略】上采样改进|EUCB,轻量高效的上采样模块|即插即用

YOLOv8作为当前最先进的实时目标检测与实例分割模型之一,其在速度与精度之间取得了出色的平衡。然而,在资源受限的边缘设备或对实时性要求极高的应用场景中,YOLOv8的计算开销,尤其是在特征金字塔网络(FPN)和路径聚合网络(PAN)中用于特征融合的上采样操作,仍然是一个瓶颈。YOLOv8的颈部(Neck)结构中广泛使用nn.Upsample进行上采样,该操作虽然简单,但缺乏对特征内容的感知能力,且后续通常需要标准卷积来修复因插值带来的伪影,这增加了不必要的计算负担。

m0_47867638的博客 752

【算法】线段树

几乎是算法竞赛最常用的数据结构了,它主要用于(要求满足结合律)。与树状数组相比,它可以实现的,还可以同时(加、乘),更具通用性。如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。

weixin_73366312的博客 1808

BMS控制板硬件设计核心要点与工程避坑指南

电池管理系统(BMS)硬件设计是保障锂电安全与寿命的关键环节,其本质是模拟前端精度、数字控制可靠性、电源完整性及电磁兼容性四大要素的系统协同。理解AFE芯片(如BQ76920)的物理层约束、MCU与专用监控IC的异构分工逻辑,是构建高鲁棒BMS的基础;而晶振布局、I²C总线匹配、MOSFET体二极管方向、开尔文采样等细节,直接决定量产良率与EMC合规性。在电动工具、储能系统、两轮电动车等中低功耗BMS应用中,成本敏感型方案常采用STM32F0+AFE架构,此时电源滤波电容选型、复位电路ESR控制、TVS/齐

weixin_30591519的博客 260

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构与算法 - 线段树的原理:区间查询与更新的实现

线段树:高效区间操作的数据结构 线段树是一种二叉树结构,专为处理数组区间查询(如求和、最值)和更新操作而设计。其核心思想是通过分治预处理区间信息,实现O(log n)时间复杂度的查询和更新。 关键特性: 每个节点代表一个区间,叶子节点为单元素 采用完全二叉树结构,可用数组存储 支持高效的单点/区间更新和查询 进阶应用: 延迟传播技术优化区间更新 可扩展支持多种聚合操作(和、最值等) 适用场景:需要频繁区间操作的静态/半动态数据集,如算法竞赛、数据库索引等。相比朴素方法,线段树将区间操作复杂度从O(n)降至O

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[算法]线段树的python实现

线段树的python实现 博客 博客1: 线段树 从入门到进阶 博客2:线段树详解 题目地址 落谷: P3374 【模板】树状数组 1 P3368 【模板】树状数组 2 基本概念 什么是线段树 线段树是一种二叉搜索树,什么叫做二叉搜索树,首先满足二叉树,每个结点度小于等于二,即每个结点最多有两颗子树,何为搜索,我们要知道,线段树的每个结点都存储了一个区间,也可以理解成一个线段,而搜索,就是在...

年糕的博客 7020

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

算法之线段树

(Segment Tree)几乎是最常用的数据结构了,它主要用于维护(要求满足结合律)。与相比,它可以实现 O(log⁡n) 的,还可以同时支持(加、乘),更具通用性。接下来我们用这道模板题为例,看看线段树是怎么维护这一信息的。

imlsp12356的博客 1532

线段树算法

以下内容来自百度线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。1.区间查询:查询某个区间内的信息。例如,查询某个区间内的最大值、最小值、总和等等。2.区间修改:对某个区间内的数值进行更新。

xyzcoolplayer的博客 1629

线段树算法详解与实现

此题意味着修改时我们需要每次都遍历子节点,时间复杂度为m*n*logn,还不如直接使用数组(复杂度为n*m),那我们看看能否使用剪枝操作来降低时间复杂度。区间修改+区间查询 但我们发现区间无法直接修改,即无法正常使用懒标记(正常使用懒标记是指:当前节点可以直接修改,并不依赖子节点)。因为gcd区间【l+1,r】和差分和区间【1,l】不同,所以写了两个query,省的返回结构体。(可以在差分序列中维护⼀个区间和query1,此时原数列的值就是差分序列中区间的和。可减少代码细节错误率。

2401_87727424的博客 1467

【算法提高篇】(二)线段树之区间修改:懒标记的核心奥义与实战实现

本文深入讲解线段树中的懒标记技术,重点解决区间修改的效率问题。文章首先分析基础线段树处理区间修改时时间复杂度退化为O(n)的痛点,引出懒标记"延迟更新,按需下发"的核心思想。通过详细拆解节点结构设计、三个关键辅助函数(pushup/lazy/pushdown)的实现逻辑,完整展示了带懒标记线段树的建树、区间修改和查询操作。文章提供洛谷P3372模板题的AC代码,总结6个常见易错点,并指出懒标记可扩展应用于区间赋值、乘法等操作。掌握懒标记技术能显著提升线段树处理区间问题的效率,是算法竞赛和

2301_79248256的博客 1300

JAVA:实现SegmentTree线段树算法(附带源码)

JAVA:实现SegmentTree线段树算法(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2014

浅谈线段树——基础篇

本文先讲解线段树的基础知识及其运用,更多进阶内容以后有时间再写(等我学会了再说 )

jay_zai的博客 697

线段树 算法

线段树 算法

牛牛博士博客 1269

算法竞赛--数据结构篇--线段树

想必有过算法竞赛学习经验的同学及读者都对线段树有所耳闻,对于线段树的难写与难调程度咬牙切齿。但是偏偏线段树还是算法竞赛中最重要的数据结构之一,用途更是非常广泛,比st表,树状数组等简单的数据结构的适用范围大很多很多。本文竭尽作者对于线段树的理解和代码经验,希望能帮助读者了解线段树的实现,建树,操作的原理。然后本文后半部分会对线段树的进阶操作进行详细的讲解,主要分为线段树的懒标记(区间修改操作),扫描线等难度和代码量更大的操作。

Sam_Dongsy的博客 1198
上一篇: 实用算法实现-第 5 篇 二分查找树
下一篇: D语言之路-第1篇 库函数之争
存储李希
博客等级 码龄15年 418粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值