题目链接
做法
因为 $ n $ 很小,所以问题可以从 $ n $ 入手。
发现询问不会删除第一列和最后一列,那么最后的结果为合并地图 $ [1, l_i - 1] $ 和 $ [r_i + 1, m] $ 的 $ MST $ 得到的 $ MST $ 大小。所以预处理只要求地图前缀/后缀 $ MST $ 即可。
考虑如何合并两个相邻的 $ MST $ 。发现合并这两个 $ MST $ 只有最前和最后两列的点会产生连接的关系,所以每个 $ MST $ 只要记录两端的点构成的虚树(虚树边权为两点之间路径的最大值),然后再用 $ Kruskal $ 建最小生成树即可。
时间复杂度 $ O(n(m + q) \log n) $ 。
1 |
|