• 感性理解斜率优化


    考虑这样一个问题:给定数组 ({c_n},{d_n}),求数组 ({f_n}) 满足 (f_i=min_{j<i}{f_j+c_i imes d_j})(c_i,d_i) 可能为负数。

    (i) 从小到大计算 (f_i),并将所有 (j<i)((d_j,f_j)) 放在二维平面上。计算 (f_i),其实就是将平面上每个点的 (y) 加上 (c_i imes x),然后取全局最小的 (y)

    对于平面上的三个点 ((x_1,y_1),(x_2,y_2),(x_3,y_3))(x_1<x_2<x_3)),若 (operatorname{slope}((x_1,y_1),(x_2,y_2))>operatorname{slope}((x_2,y_2),(x_3,y_3))),那么 ((x_2,y_2)) 永远不是最优解。证明显然。

    我们知道,一个下凸壳加上一条直线,仍然是一个下凸壳。于是,我们只需要维护一个支持插入点的下凸壳,计算 (f_i) 时在下凸壳内二分转折点即可。

    一些题目只需要用单调队列维护,是因为其 (d) 数组具有单调性;有的甚至可以做到线性,是因为其 (c,d) 都具有单调性。

    Written by Alan_Zhao
  • 相关阅读:
    Axis2发布Webservice进行身份校验
    Spring集成Axis2
    分布式事务解决方案之TCC
    Lua 数据类型
    Lua 基本语法(1)
    Axis发布Webservice服务
    Linux中NFS服务器搭建
    SpringBoot多环境切换
    springboot中spring.profiles.include的妙用
    oracle树形语句
  • 原文地址:https://www.cnblogs.com/alan-zhao-2007/p/convex-hull-trick.html
Copyright © 2020-2023  润新知