复习斜率优化。
原题公式$min((x-x_i)^2+c_i)$拆开括号得$min(-2*x*x_i+x_i^2+c_i)+x^2$
是个斜率优化的标准形式。
题目中建出操作树后一个星球会影响到它的子树。所以可以使用线段树
(其实所有和区间相关的问题都可以使用线段树)
线段树上的每一个节点上存储插到它的直线。然后使用半平面交。
每次查询就是查询一路上的节点,挪动指针即可做到时间复杂度O(nlog_2n)
排序直接做是O(nlog^2n)的,但是可以先把所有直线排序,然后把所有要排序的直线挂在对应位置。最后遍历排序后的序列,在线段树的节点的直线数组上push_back即可。
这样子可以去掉排序的log。