首页 > 其他分享 >CDQ 分治,李超树与斜率优化

CDQ 分治,李超树与斜率优化

时间:2022-12-01 16:55:59浏览次数:35  
标签:log 斜率 给定 CDQ bmatrix 区间 向量 李超树

P4027,及一类类似问题:

给定 \(a_i,b_i,x_i,y_i\),对于每个 \(i\) 求出 \(f_i = \max\limits_{j=1}^{i} \{a_ix_j+b_iy_j\}\)

先说一下一类经典问题的做法:

给定 \(n\) 个二维向量,多次给定一个向量,求该向量与开始给定向量点乘 / 叉乘最大值。

点乘可以交换两维数值后取反第一维以转化为叉乘。现在来讨论叉乘。

叉乘的几何意义是两向量张出平行四边形的有向面积,取询问向量 \(x\) 作为底,则要找到到给定向量的投影距离(生造一个词 qwq)最小的向量。

找出凸包,则用平行 \(x\) 的直线切凸包,切到的点则是最优点。这是 wqs 二分的内容(?

感性理解,给定向量的斜率单调变化时,切点也单调变化。于是若斜率有序,可以维护一个指针做到均摊 \(O(1)\)。

说回原题,把式子写成 \(\begin{bmatrix} x_j \\ y_j \end{bmatrix} \cdot \begin{bmatrix} a_i \\ b_i \end{bmatrix}\) 即 \(\begin{bmatrix} -y_j \\ x_j \end{bmatrix} \times \begin{bmatrix} a_i \\ b_i \end{bmatrix}\) 的形式,就能化回上述形式。

但是,现在要一边插入一边查询,插入在首位时可以使用单调队列维护,插入在中间只能用平衡树维护。码量太大了,不想学。

在具有时间轴时,cdq 分治允许在离线的条件下,通过一些处理,使得让按其他维度排序成为现实。

现在单来考虑左区间往右区间贡献的部分。此时是一个离线问题,把左边的点插进凸包,右边的点按询问斜率的顺序排序,这样即有序。

(没学过 cdq,下面来随便口胡一下)

一类问题后面的计算依赖前面的计算(分治 fft),感觉上(是的,我在口胡)是把贡献拆成了 \(\log\) 个小区间分别贡献。数轴上共有 \(n \log n\) 个小区间,每个数被包含于 \(\log\) 个小区间中,要给 \(\log\) 个区间贡献。这些说明了复杂度是 \(O(\text{解决一次贡献的复杂度} \cdot \log n)\)。

考虑批量转移,一个区间内的点对后面的一个区间做贡献,这样,被贡献的点之间是独立的,也就让对另一个维度排序成为可能。

一个点需要被它前面的 \(\log\) 个区间转移到,这是一段前缀,不妨进行二进制拆分,每一步拆出最多能拆出的二进制位,那么一个区间 \([i,i+2^k)\) 对 \([i+2^k,i+2^{k+1})\) 批量产生贡献。

标签:log,斜率,给定,CDQ,bmatrix,区间,向量,李超树
From: https://www.cnblogs.com/purplevine/p/16941926.html

相关文章

  • 矩形有交问题—CDQ
    矩阵覆盖问题-CDQ分治[COCI2018-2019#2]Sunčanje题目描述Slavko做了一个不寻常的梦。在一个晴朗的早上,\(N\)个白色的矩形一个接着一个爬上了Slavko家的屋顶,并在屋......
  • 计算直线的斜率
    在二维平面直角坐标系中,只要给定了两点(不重合),就能确定唯一一条直线,但当直线平行或垂直与x轴时,x或y的系数将为0,不方便存储。不过,既然给定了两个点,我们可以直接用单位向量......
  • CDQ
    额。。。忘得差不多了1.陌上花开:如何去重:我们直接去重,然后对于每一类数,贡献再加上tot-1,我们直接对个数开桶即可。2.动态逆序对:下午一开就嘎嘎打,然后疯狂调,发现:我只考......
  • CDQ分治
    CDQ分治常用于解决多维偏序关系问题,以三维为例,第一维可以排序解决,第二维进行分治,第三位常用数据结构(树状数组)维护,于是也可以将动态带修改问题,离线处理,常默认时间为第一维。......
  • CDQ分治
    0x00简介--是的,\(CDQ\)分治是一款由女oier\(CDQ\)引入的分治算法,可以利用分治让我们离线地解决一些在线数点问题--你说的对,但是面对强制在线的题目,\(C......
  • CDQ && 珂朵莉树
    对于题目:P4690[Ynoi2016]镜中的昆虫我们零基础从各个小部分开始学习,并且A了Ta.Part1CDQ分治一看到这个东西,一定会觉得很吓人,觉得是什么高大上的东西。其实不......
  • 【bzoj2402】陶陶的难题II(分数规划+树链剖分+斜率优化+半平面交)
    题目让我们维护这么一个东西:\(\dfrac{y_i+q_j}{x_i+p_j}\)的最大值。容易想到分数规划,二分枚举答案\(mid\),则有:\(\dfrac{y_i+q_j}{x_i+p_j}=mid\)化简:\(y_i+q_j=mid\t......
  • 浅谈cdq分治
    咕了很久的\(\text{cdq}\)终于开始学了。中间翻了很多博客,最后是看这一篇看懂的。讲的不算详细,但是要点基本都有。\(三维偏序问题\)就比如臭名昭著大名鼎鼎的陌上花开......
  • 李超树(斜率优化无脑DS)
    如果我们需要一个数据结构来维护多个线段在一个点上的最值,那我们就可以使用李超树来完成这个事情。李超树的每个区间记录的是中点值最大的一条线段。如何做到呢?1、插入s......
  • BZOJ 1007(水平可见直线-斜率排序+栈贪心)
    1007:[HNOI2008]水平可见直线TimeLimit: 1Sec  MemoryLimit: 162MBSubmit: 1830  Solved: 656[​​Submit​​][​​Status​​][​​Discuss​​]......