本文目录#
Li Chao Tree 简介#
Li Chao Tree 维护一组线性函数 f(x) = ax + b
的最小值(或最大值)。通过分治划分区间并比较两条线的交点,实现 O(log C) 插入和查询(C 为 x 的取值范围)。
数据结构#
- 节点维护当前最佳直线与左右区间;
- 插入新直线时比较当前区间端点值并递归分裂。
1 | class LiChaoTree { |
应用#
- 动态规划优化:
dp[i] = min_j (a_j * x_i + b_j)
; - 凸包与直线集合;
- 在 Li Chao Tree 上处理区间添加、离散化 x 范围。
自检清单#
- 是否处理 long 溢出与坐标离散化?
- 是否根据范围选择合适的区间(含负值)?
- 是否区分最小值与最大值(取反系数)?
参考资料#
- CP-Algorithms Li Chao Tree:https://cp-algorithms.com/geometry/convex-hull.html#lichao
- emaxx.ru 文章
- AtCoder Library Li Chao Tree 模板
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。