凸包学习笔记

1|0凸包

一般通过证明或观察出斜率有单调性于是可以用凸包维护。

1|1P5155 [USACO18DEC]Balance Beam P

题意:有长为n的序列,每次等概率向左右移动一格,也可以结束并获得当前位置上的值,求每个位置的最大期望收益。

思路:完全不懂期望!

首先有一个结论,在[0,L]上的x处,每次等概率向两边走,走到0,L就停下,最终走到0的概率是LxL,到达L的概率是xL。证明的话,设fi为在i处最终到达L的概率,那么有fi=fi1+fi+12,这意味着这是等差数列,而又有f0=0,fL=1,于是就可以推出刚才的结论。

接着再来看这道题,我们可以发现,最优策略肯定是在一个位置左右各选择一个停止点,到这个点就停止,我们把这些点成为停止点,现在问题就是选择哪些点作为停止点。假设当前在位置i,左右的停止点是a,b,那么期望就是va×biba+vb×iaba。这样还是不够具体。我们把(i,vi)当场一个点放在二维平面上,那么va×biba+vb×iaba就对应线段ABx=i的交点的纵坐标,而最大的期望就是所有交点中最高的一个,而这样的线段一定在凸包上,于是我们求出凸包就可以了。

1|2P3309 [SDOI2014] 向量集

题意:加向量,求区间中的向量和询问给出的向量的点积的最大值。

思路:线段树维护凸包。

可以把答案变形为ansy0=max{x0y0x+y},发现最优答案肯定值在凸包上取到,于是维护上、下凸包即可。因为是在线的,因此对于一个区间,只有这个区间的所有线段都被加进来后才会求出这个区间的凸包,这样才能保证复杂度。

1|3P5416 [CTSC2016] 时空旅行

思路:首先,y,z 这两是可以不要的,问题就变成了求 min{(xxi)2+ci},即 min{x22xxi+xi2+ci},发现这就是斜率优化,可以写为 2xxi+k=x2+xi2+ci,于是维护凸包后每次找最后一个斜率不大于2x的线段就可以了。但是这道题不能直接求出每条线出现的区间,不过可以用dfn序(类似NOI2014购票)来处理。

还有询问的问题。我们可以把所有询问按 x 排序,这样每次的最优线段一定在之前的最优线段之后,可以对每个区间同时维护当前最优线段,然后只需考虑右移的贡献。

1|4P9521 [JOISC2022] 京都观光

思路:考虑有行 x<y<z,列 l<r,那么有三种方式:

  1. (x,l)(x,r)(z,r),代价 (rl)ax+(zx)br
  2. (x,l)(z,l)(z,r),代价 (rl)az+(zx)bl
  3. (x,l)(y,l)(y,r)(z,r),代价 (rl)ay+(yx)bx+(zy)by

如果经过 y 更优,那么有 ayaxyx<brblrl<azayzy

同理,考虑何时向下何时向右,那么有 brblrl<azaxzx 时往下走。

发现就相当于要维护下凸壳。于是维护下凸壳就可以了。


__EOF__

本文作者Xttttr
本文链接https://www.cnblogs.com/Xttttr/p/18014470.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Xttttr  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示