题解 CF639F【Bear and Chemistry】

我们将路径表达为圆方树上的路径,
当经过一个方点时,
这个方点可以再随意指定一个相邻的圆点,
并且原图一定存在这样一条路径,
使得经过圆方树路径上圆点的同时,经过所有方点指定的圆点。
因此对于每个方点,
只需要维护它周围点的最小值。
然而,
直接暴力地修改周围方点的最小值复杂度明显是错的。
实际上我们可以直接维护一个点子树中所有点的最小值,
而不维护父亲。
这样子在路径上查询最小值时,
只需要特判\(O(1)\)个点的父亲。
使用\(LCT\)等数据结构可以做到\(\mathcal{O(nlogn)}\)的时间复杂度。
代码请自己打!

posted @ 2021-02-22 14:31  Bushuai_Tang  阅读(61)  评论(0编辑  收藏  举报