Link
Solution
可以发现最短路程就是连接所有的宝物的一棵生成树的边权和 修改一个节点只会影响DFS序在它两边的点,可以用Treap维护。 然后就可做了。
Tips
看出了DFS序,可是硬要实时地维护生成树的边权和,结果用正常的DFS序就做不了了。 发现正解直接维护相邻点的距离和,最后再加上最靠左的和最靠右的点的距离。。简单粗暴解决问题。。
Code
1 | //Code by Lucida |
可以发现最短路程就是连接所有的宝物的一棵生成树的边权和×2 修改一个节点只会影响DFS序在它两边的点,可以用Treap维护。 然后就可做了。
看出了DFS序,可是硬要实时地维护生成树的边权和,结果用正常的DFS序就做不了了。 发现正解直接维护相邻点的距离和,最后再加上最靠左的和最靠右的点的距离。。简单粗暴解决问题。。
1 | //Code by Lucida |