题解 CF1901F Landscaping

使梯形面积最小,即保证答案合法同时,直线在 $x=\frac {n-1}2$ 处的 $y$ 尽量小。记 $mid=\frac{n-1}2$。

容易发现直线一定至少过两个折点,否则一定可以通过顺时针或逆时针旋转减小 $y_c$,直到碰到另一个点。又因为所有点都在这条直线下方,所以答案直线一定是凸包某条线段的所在直线。因为让 $y_{mid}$ 最小,更进一步地,是凸包过 $mid$ 的线段所在的直线。于是我们解决了没有修改的问题。

加上修改,似乎要支持一个合并凸包的操作。但我们只关注跨越 $mid$ 的那条线段,先看如何处理左半边的答案。

设当前时刻为 $i,i\in[0,\left\lfloor\frac n 2\right\rfloor)$。暴力想法是枚举左半边的点和右半边的点共 $O(n^2)$ 条线段,算出 $y_{mid}$ 最大值,对应的线段一定在凸包上。发现有效的线段很少,对于左边的某点 $P$,它最优的匹配点一定在右半边的凸包上,换句话说,是 $P$ 与右半边凸包的切点,于是可以二分求得。

记 $g(x,y)$ 为过 $(x,y)$ 点的切线,$f(L)$ 为直线 $L$ 在 $mid$ 处的值,则 $ans_i=\max(\max\limits_{j=0}^ i f(g(j,b_j)),\max\limits_{j=i+1}^{\left\lfloor\frac n 2\right\rfloor}f(g(j,a_j)))$,预处理前缀后缀 $\max$ 即可。

右半边的做法类似,时间复杂度 $O(n\log n)$。

posted @ 2023-11-29 08:17  Terac  阅读(9)  评论(0)    收藏  举报  来源