斜率优化总结
妈的这玩意儿实在是太神秘了。。。一会儿对x排序一会儿对y排序,一会儿建凸包一会儿李超树。。。
这些细节性的东西还是写一个总结为好。不然以后一直犯要吃大亏。
众所周知斜率优化的方程都能够写成类似 。即一个一次函数的形式,并且这个一次函数是动态给出的。这个形式决定了斜率优化肯定能用李超树去做。
但是如果要求线性呢?线性一般使用单调队列,还是得去推柿子。
假设我们有两个决策点 和 ,要求在 处的最值。
众所周知最值问题都可以通过寻找谁比谁逊来解决。
你也可以:
对于第一种情况,需要找到一个点满足前面的斜率都比 小,后面的都比 大,所以需要斜率递增的下凸壳。同理,后者需要上凸壳。
但是需要注意几点。
如果要使用单调队列维护凸壳,需要保证给出的分母是递增的。(因为实际上是前缀的凸壳,每次都需要重新排序的);如果要线性寻找答案,需要保证对应的 和 是递增的。
这个其实做题的时候分析比较好。。。如果记结论容易写挂的说。。。
如果以上二者都不满足,最好使用李超线段树,常数不大+好写好调,不像某个CDQ套凸包要调半天。
本文作者:Prean
本文链接:https://www.cnblogs.com/lmpp/p/16158467.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步