“凸包技巧”(常写作 Convex Hull Trick, CHT):一种算法优化方法,用来在一组一次函数(直线)中高效地进行“加入直线”和“查询最小值/最大值”。常用于把某些动态规划(DP)从 \(O(n^2)\) 优化到 \(O(n \log n)\) 或 \(O(n)\)。
We used the convex-hull trick to speed up the DP transitions.
我们用凸包技巧来加速动态规划的转移。
In problems where each state adds a line and later queries the best value, the convex-hull trick can reduce the time complexity dramatically.
在那些每个状态都会加入一条直线、之后又要查询最优值的问题中,凸包技巧可以显著降低时间复杂度。
/ˈkɑn.vɛks hʌl trɪk/
该术语由三部分构成:convex(凸的)+ hull(外壳;几何中的“凸包”)+ trick(技巧/小窍门)。名字源于几何直观:把“直线集合”在某种对偶/几何视角下与“凸包边界”联系起来,通过维护类似“凸包”的结构来快速找到最优直线,因此得名“凸包技巧”。