首页 > TAG信息列表 > 李超

[学习笔记]李超线段树

这个之前学过的,结果我发现我忘了,怕之后再忘,我就再写一下吧。毕竟这个东西非常有用(好写)可以代替cdq/平衡树+斜率优化,来优化dp 流程 数据结构本质是一棵线段树,每个节点都储存了\(bst[]\)。 \(bst[l,r]\)表示覆盖该点范围的在\(mid\)处取最值的线段。 你会想:维护这个有什么用?每个

李超线段树

解决多线段单点最值问题。 模板题 浅略的说一下。 每个区间存储位于当前区间中的值最大的线段。每次插入新线段,如果当前区间没有存储线段,就直接插在这里,否则分类讨论一下,如果某一个子区间的最优线段必定是当前线段,这个子区间就不用处理了。而对于另一个有不确定因素的,我们把当前的

U214385 老牛拉破车

题目大意 地面上有 \(n\) 辆车,可以视为 \(n\) 个点,编号为 \(1\sim n\)。规定向右为正方向,每辆车的质量为 \(m_i\)。 由于车是破车,车轮瓦特了,只能与地面发生滑动而非滚动,车轮与地面之间的动摩擦因数为 \(\mu\)。已知每辆车在 \(t_0=0\) 时刻在外力作用下有速度 \(v_i\)(该速度由外力

【李超线段树】【学习笔记】

【李超线段树】【学习笔记】 问题引入 Segment 对于区间修改操作,可以联想到线段树。但是容易发现标记(即同一个区间内的两条线段)并不能快速合并。 于是我们可以采用标记永久化,即李超线段树。 算法步骤 线段树每个节点保存:区间范围(l,r),一条线段(k,b,id) struct node{ int l,r,

「数据结构」李超线段树

title: 「数据结构」李超线段树 date: 2022-01-22 10:38:01 tags: c++ 数据结构 categories: 数据结构 mathjax: true description: 李超线段树的简单讲解 #0.0 屑在前面 李超线段树 由学军中学队爷李超在省选讲课中提出。 事实上,整体来看并没有什么特别特别的,只是线段树维护

关于李超线段树和自己的感想

李超线段树用来维护:给你\(n\)条直线,求出当\(x=a\)时的最大值,支持在线插入. 具体实现:   我们对于线段树上的每一个节点,记录在\(x=mid\)时的最优线段.   此时我们即将要插入一条线段为\(A=kx+b\),我们计算一下它在中点处的值为\(val\),\(p\)表示我们记录的线段.   1. \(v

LOJ6679 Unknow

这题感觉好难写,作为大颓怪,只想嘴巴,所以就有了这篇嘴巴题解。 我们考虑询问时问的 \(x\in[l_i,r_i]\) 的,也就是一段线段,这启发我们用李超线段树。 然后由于是链上查询,我们又想到了树剖,所以我们有一个很自然的想法是树剖后,李超线段树维护每一条重链的前缀,这一部分是两只 \(\log_2n\)

李超线段树

李超线段树可以用来维护平面上的线段(但是要求 \(x\) 或 \(y\) 其中一维比较小,在 \(10^5\) 及以内)。 称一条线段能成为区间 \([l,r]\) 中的最优线段,当且仅当: 该线段的定义域完整覆盖了区间 \([l,r]\) ; 该线段在区间中点处最优。 模板题:P4097 [HEOI2013]Segment 题意:给定平面

从零开始的数据结构:李超线段树

在平面上加入一条线段。记第 i 条被插入的线段的标号为 ,该线段的两个端点分别为 ( x 0 ,

【洛谷4097】[HEOI2013] Segment(初学李超线段树)

点此看题面 有\(q\)次操作,分为两种:加入一条线段,询问与直线\(x=k\)交点纵坐标最大的线段的最小编号。 \(q\le10^5,x\le39989\),强制在线 李超线段树 第一次写李超线段树,之前遇到过每次插入直线的题目是直接靠线段树上二分过的。。。 其实思想也挺简单的,就是考虑在线段树的每个节点

成立13年,营收破亿,挂牌新三板,这家喊着“无兄弟,不编程”的公司倒闭了

“兄弟连是我亲生的,写这封信的时候我的心在滴血,未来要独自面对没有你的日子,倾尽所有只求你能活下去,大灾面前只能眼睁睁看着你逝去……”如果你是一名 PHP 开发工程师,一定听过一家叫做兄弟连的培训机构,它是国内最大的 PHP 培训机构,当然倒闭之前主流编程语言都囊括了。2014年,我从零参

李超线段树简易讲解

大佬的博客讲的很清晰 李超线段树就是标记永久化维护区间线段最值的数据结构 假设有下列的问题: 给定平面中\(n\)条线段,(给出斜率\(k\)和截距\(b\),并且知道线段左右端点的横坐标值为多少),然后\(m\)个询问,每次给定\(x = x_0\),问和\(x = x_0\)相交的直线中,横坐标值最大为多少。 很明

「李超线段树」

省选之前的知识了,现在省选苟进队后赶紧补一下 李超线段树是由李超发明的用于求函数定点最值线段树,又名李超树 例题 [HEOI2013]Segment 大意是,在一个二维平面上,依次加入若干条线段,询问对于某个 \(x\) 的最大值,强制在线 李超树像普通线段树一样同样支持两种操作:插入和查询 插入 在

Final阶段贡献分配

此作业要求参见: https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11619 要求1 每位组员的贡献分值 姓名  柯源 袁艳春  王子一  李超  杜志峰  季嘉  赵英伟  得分  13 12  11  10  9  8  7        要求2 分值的计算过程和变量赋值的依据 每人

李超线段树

前言 T4正解李超线段树?不会,滚过来学 保留节目百度百科自学已被删除 讲解 貌似思路并不是很难的亚子 我们需要在线支持一下两个操作: 插入一条线段 给定\(x_0\),询问当\(x=x_0\)时所有线段的最高点 我们可以使用权值线段树! 对于每个区间,我们维护一个最优线段 1.插入 显然对于一

UOJ #88. 【集训队互测2015】Robot 李超线段树

李超线段树模板题,要同时维护最大值和最小值,然后求交点的时候注意 double 的转换 code: #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <vector> #include <algorithm> #include <string> #define N 600007 #de

[CF1303G] Sum of Prefix Sums - 点分治,李超线段树

给定一棵 \(n\) 个点的带点权的树,求树上的路径 \(x_1,...,x_k\) ,最大化 \(\sum_{i=1}^k ia_{x_i}\) Solution 树上路径问题可用点分治。 考虑如何合并两条路径对每条路径,记 \(l\) 为长度(点数),\(v\) 为 \(\sum_{i=1}^l ia_{x_i}\) ,\(s\) 为 \(\sum a_i\) ,那么对于两条路径 \((l_1,v_

[模板][李超线段树][JSOI 2008] Blue Mary开公司

题目大意 每次给整个区间内加入一个一次函数,求单点最大值。 Code #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; #define RG register int #define LL long long const int Index=50010; double k[100010],b[100010];

李超线段树

功能 李超线段树资瓷以下两种操作: 1.在二维平面内插入一条线段 2.询问与直线\(x=K\)相交的线段中,交点纵坐标最大为多少。 原理 结点 李超线段树的每个节点,都维护这一个优势线段。这个优势线段使得该节点所维护区间的中点在该优势线段上最大。 修改 考虑如何维护上面的结点呢。

Codechef TSUM2 Sum on Tree 点分治、李超线段树

传送门 点分治模板题都不会迟早要完 发现这道题需要统计所有路径的信息,考虑点分治统计路径信息。 点分治之后,因为路径是有向的,所以对于每一条路径都有向上和向下的两种。那么如果一条向上的路径,点数为\(s_1\),单独考虑这条路径的权值和为\(v_1\),和一条向下的路径,点权和为\(s_2\),单

CF1175G Yet Another Partiton Problem [DP,李超线段树]

Codeforces 思路 发现不了什么性质,那就直接上DP吧。注意到DP可以分层,所以设\(dp_i\)表示当前层,分割前\(i\)块的最小代价,而\(dp'\)为上一层,那么有 \[ dp_i=\min\{dp'_j+(i-j)\times \max(a[j+1,i])\} \] 显然是个斜率优化的式子,那么按照套路拆开,有 \[ dp_i=\min\{dp'_j-j\times \max

洛谷P4069 [SDOI2016]游戏(李超线段树)

题面 传送门 题解 如果我们把路径拆成两段,那么这个路径加可以看成是一个一次函数 具体来说,设\(dis_u\)表示节点\(u\)到根节点的距离,那么\((x,lca)\)这条路径上每个节点的权值就会加上\(-dis_ua+dis_xa+b\),而\((lca,y)\)这条路径上每个节点就会加上\(dis_ua+a(dis_x+2\times dis_{lc

bzoj 1568 李超线段树

博客:http://www.cnblogs.com/mangoyang/p/9979465.html 李超线段树支持两种操作:1:插入一条直线。2:询问在x = c与这些直线的交点中最大的y坐标。 插入的时候,如果有交点,本层节点留下来的是优势直线,劣势的那条去递归比较。优势直线是指在这个区间中覆盖的面积最大的那条直线。 维护的

学习笔记 李超线段树

写在之前 李超线段树 简称\(LCT\) 正式开始 李超线段树主要用于维护这样一类问题 有两个操作 1.插入一条直线(k,b) \(y=kx+b\) 2.给出一个值\(x\) 求\(x=k\)与这些直线交点中纵坐标的最大值 我们可以使用\(CDQ\)分治或者平衡树维护 但是这里有了一种玄学鬼畜的数据结构 李超线段

JSOI2008 Blue Mary开公司 | 李超线段树学习笔记

题目链接:戳我 这相当于是一个李超线段树的模板qwqwq,题解就不多说了。 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define MAXN 500010 using namespace std; int n,m; int t[MAXN<<2]; char s[10]; double k[MAXN<<1],b[MAX