CF1901F Landscaping

发布时间 2023-11-28 13:13:44作者: luyiming123

题意大概就是给你 \(n\) 个点\((0, a_0), (1, a_1), \cdots, (n - 1, a_{n - 1})\) ,用一根直线 \(l\) 覆盖这些点,要求所有点都在这条直线 \(l\) 之下,设 \(y_0, y_1\) 分别为 \(l\)\(x = 0, x = n - 1\) 的交点纵坐标值,求 \(\min y_0 + y_1\) 。显然题目不可能这么弱智,题目还要求按照顺序依次将 \(a_i\) 修改成 \(b_i\), 在每一次修改后都要求出答案。

首先一个很显然的性质就是直线肯定是这个点集构成的上凸壳的某条线段延伸的,否则就很劣。然后我们画个图就发现如果我们选择的线段两个点都在 $ x = \frac{n - 1}{2}$ 的一侧的话,那旋转一下就变优了,所以这条线段不能要了。通过这两个性质,我们可以得到最终的直线就是点集构成的上凸壳的线段中与\(x = \frac{n - 1}{2}\) 相交的那一条。我们将在 \(x = \frac{n - 1}{2}\) 左侧的点的集合设为 \(L\), 右侧的设为 \(R\)。 设两点 \(x, y\) 的切线与 \(x = \frac{n - 1}{2}\) 的交点纵坐标大小为 \(\lambda(x, y)\)。 不难发现我们要找的那条线段与 \(x = \frac{n - 1}{2}\) 的交点纵坐标就等于 \(\max_{x \in L, y \in R} \lambda(x, y)\) ,否则他就不是凸包了。考虑咋求这东西,我们发现在处理 $ i \in [0, \frac{n - 1}{2})$ 的答案时, \([\frac{n - 1}{2}, n - 1]\) 的点集的高度都是 \(a\), 所以我们可以直接建出 \([\frac{n - 1}{2}, n - 1]\) 的上凸壳,然后左边的点查答案直接二分就完事了。询问的答案就是 \(b\) 的前缀max 和 \(a\)的后缀max 拼一下。 \([\frac{n - 1}{2}, n - 1]\) 的询问类似。