Gravatar
┭┮﹏┭┮
积分:3648
提交:829 / 1810

Pro2305  [CTSC 2016]时空旅行

一道好题。


这是一个树形结构,我们可以先拍成 $dfn$ 序,然后对于每个星球,本质上就是在其子树内区间再 删去一些小子树 所构成的一些区间,因为最多 $n$ 个操作,所以区间最多 $\mathcal{O}(n)$ 个,线段树分治,把这些区间插入,然后我们考虑如何求答案。


$y,z$ 是没用的,最终答案即为 $(x_0 - x)^2 + c$,拆开得 $- 2x_0x + {x_0}^2 + x^2 + c$。


我们考虑斜率优化,在看这个式子 $s = - 2x_0x + {x_0}^2 + x^2 + c$,移项得 $x^2 + c = 2x_0x - {x_0}^2 + s$,即点 $(x,x^2 + c)$ 斜率为 $2x_0$,维护下凸包即可,若二分则复杂度是 $\mathcal{O}(n\log^2{n})$,只需将 $x$ 与斜率 $x_0$ 都从小到大排序,我们可以利用单调栈达成 $\mathcal{O}(n\log{n})$ 的复杂度。



2024-09-14 23:09:32    
我有话要说
暂无人分享评论!