题解 CF1901F Landscaping

使梯形面积最小,即保证答案合法同时,直线在 x=n12 处的 y 尽量小。记 mid=n12

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

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

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

g(x,y) 为过 (x,y) 点的切线,f(L) 为直线 Lmid 处的值,则 ansi=max(maxj=0if(g(j,bj)),maxj=i+1n2f(g(j,aj))),预处理前缀后缀 max 即可。

右半边的做法类似,时间复杂度 O(nlogn)

posted @   Terac  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示