首页 > 其他分享 >李超线段树 学习笔记

李超线段树 学习笔记

时间:2024-07-05 21:30:34浏览次数:6  
标签:le log 线段 李超 笔记 区间 下放

问题引入:

在一个平面内,有 \(n\) 次操作,这些操作分为 \(2\) 种:第一种是在平面内加入一条线段;第二种是给定一个 \(k\) ,查询直线 \(x=k\) 与这些线段交点的最大值。(强制在线, \(n\le10^5,1\le x\le 39989,-10^9\le y\le 10^9\) )

求这种用区间覆盖的问题,一般我们会想到线段树。但是一般的线段树无法实现上述操作,于是李超线段树营运而生。

算法:

利用标记永久化技巧,李超线段树上的每一个区间内贮存该区间内的点询问时可能的答案线段,这样询问的复杂度为 \(O(\log n)\) 。

接下来是修改。我们将修改操作分为两个部分,第一部分是找到加入的线段覆盖的区间在线段树上的位置,第二部分是修改掉原来线段树上的值。

第一部分很好处理,然后是第二部分:

首先,若该位置没有贮存线段,则直接加入。

若该位置贮存了线段(设为 \(l_1\) ,加入的那条线段设为 \(l_2\) ),则考虑我们要下放左边还是右边的线段继续修改。此时我们会发现,如果 \(l_2\) 有一半的位置大于 \(l_1\) ,此时下放 \(l_1\) 更优。所以我们先判断在 \(x=mid\) 时,哪一条线段的值最大,就将哪一条留在当前区间,下放另一条。判断下放左边还是右边是,我们找出要下放的那条线段在哪里大于留下的线段,通过比较两条线段在 \(l\) 或 \(r\) 处的取值实现。由于一段区间在线段树上最多被划分成 \(\log n\) 个小区间,而每个小区间最多下放 \(\log n\) 次,所以修改的时间复杂度为 \(O(log^2 n)\) 。

标签:le,log,线段,李超,笔记,区间,下放
From: https://www.cnblogs.com/Cyanwind/p/18286634

相关文章

  • 学习笔记(0):重拾Halcon
    目录前言教学视频前言了解我的人可能知道,我其实很想回去全职做外贸,但是大环境不好,淘宝做了3个月,1688做了1个月。我只能说销量很惨淡。现在打算还是老老实实上班去了。教学视频我之前找一个B站UP主,买了一下他的教学视频。600块钱,总共有40集,大概10个小时。大概需要一个星期学完,......
  • Python学习笔记29:进阶篇(十八)常见标准库使用之质量控制中的数据清洗
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • Makefile学习笔记
    上述代码中一共有5条规则,1-2行为第一条规则,3-4行为第二条规则,5~6行为第三条规则,7-8行为第四条规则,10~12为第五条规则,make命令在执行这个Makefile的时候其执行步骤如下:第一条规则:main是我们想要的可执行文件,通过main.o、input.o和calcu.o这三个文件......
  • HP惠普笔记本使用问题和开启TPM
    HP电脑使用开机按F10,进入BIOS,如果是英文,切换到 Advanced,选择 Display Language,选择 简体中文然后返回上一页,切换到 安全引导配置  选择“启用传统支持和禁用安全引导”,然后F10 保存退出开机+ESC是进入主菜单,可以从这里选择,进入引导HP电脑在桌面使用快捷键FN+ESC......
  • 在wsl中部署puppeteer的相关笔记
    二.缺少依赖问题 反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的aptinstall-ygconf-servicelibc6libcairo2libdbus-1-3libexpat1libfontconfig1libgcc1libgdk-pixbuf2.0-0libglib2.0-0libgtk-3-0libstdc++6libx11-6aptinstall......
  • KIM论文阅读笔记
    PersonalizedNewsRecommendationwithKnowledge-awareInteractiveMatching论文阅读笔记Abstract现存的问题:​ 现有的大多数新闻推荐方法都是从文本内容和用户点击的新闻中分别建立候选新闻模型和用户兴趣模型。然而,一篇新闻可能涉及多个方面和实体,而用户通常有不同的兴趣......
  • 暑假集训学习笔记(4):lxl DS Day 4
    倍增值域分块CF702FT-Shirts考虑将\(q_i\)从大到小排序,将\(a_i\)从小到大排序,并维护一个\(b_i\)数组表示答案,我们遍历\(q_j\)数组,每次是将\(a_i\)数组中\(a_i\geqc_j\)的全部减\(c_i\),然后\(b_i\)加1。考虑用平衡树维护\(a_i\),split一下,右区间树......
  • 算法学习笔记(24):卡常小技巧
    卡常学习来源->https://platelet.top/hpc/oldst表访问连续性就不说了,考虑计算log2。预处理比31^builtin__clz(x)慢,而且慢很多。setinsert(pos,x)如果\(pos\)是\(x\)在set中正确的位置,那么insert是\(O(1)\)的。erase(it)是\(O(1)\)的。prev(it)......
  • Diffusion综述阅读笔记
    扩散模型综述生成模型大观生成模型的本质是在学习数据的概率分布。如果将它想象成包括一个潜在变量\(z\)的联合分布模型,通过积分的形式来表示这一分布(边际似然)如下:\[P_\theta(x)=\int_zP_\theta(x,z)dz=\int_zP(z)P_\theta(x|z)dz\]其中,\(P(......
  • vue学习笔记6
    1.组件事件Parent.Vue中的代码<template><h3>Parent</h3><br/><Child@someEvent="getChildDataHandler"/><p>{{message}}</p></template><script>//1.引入组件impo......