题意:一棵树,求每个点到祖先节点
v
到
昨天考试的第三题,已经看出来是维护上凸包,但是对于 dfs 回溯时凸包怎么去维护只会暴力拿栈维护(但是好像对于随机数据时间复杂度为 O(nlog2n )),然而正解做法就是用了一个可持久化栈.
其实,可持久化栈就是一棵树,对于回溯操作就相当于回到祖先,而加入新节点
u
,直接接在上一个状态节点的下面,然后直接倍增二分(新姿势),找到最优节点
倍增二分:
从二进制高位向地位扫,比较当前最优节点的倍增节点