专栏文章
题解:P9531 [JOISC 2022] 复兴计划
P9531题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miny1tyq
- 此快照首次捕获于
- 2025/12/02 10:13 3 个月前
- 此快照最后确认于
- 2025/12/02 10:13 3 个月前
将 的图像画出来,会形如以 为定点的一个斜率为 的倒 V 型,并且容易发现 与 只会有一个交点。大胆猜测对于原图每条边,以这条边作为最小生成树的 形成一个连续区间。
考虑如何说明这件事。对于一个 , 的最小生成树可以看作两棵最小生成树合并:
- 对于 , 的最大生成树
- 对于 , 的最小生成树
因此,一个直观的感受是 的最小生成树的 会在值域上呈连续的一段。将 按从小到大排序扫一遍,设当前扫到 ,我们从 开始倒着枚举并查集维护加边直到和 这条边形成环,令加边后出现环的这条边为 ,即这个环内的最小边权。实际考虑一个前缀的最小生成树是必然会从这个环中断边,对 的取值进行分讨:
若 ,则 比 更优,因为这部分比 大所以做的是最小生成树,按照 kruskal 的加边顺序到 会成环所以死掉了。
若 ,则 比 更优,因为这部分比 小所以做的是最大生成树,按照 kruskal 的加边顺序到 会成环所以死掉了。
若 ,考虑什么时候 能比 更优,即 ,解得 ,因此若 则按照加边顺序最大生成树至少会加到 ,而最小生成树部分若加到 则合并时会形成环而 因此 死掉了;否则相反,在 时 会替代掉 , 对答案的贡献终止, 对答案的贡献开始。
通过这个方法可以找出对于每条边 其贡献区间 代表若 则 会在 的最小生成树中。这个构造同时也证明了贡献形成连续一段的正确性。问题转换成 ,还是把绝对值拆开,对 的贡献分讨:
- :无贡献;
- :贡献为 ;
- :贡献为 ;
- :无贡献;
显然 时 会被贡献,于是 ,这个拆区间是不重不漏的。将答案写成 的形式,接下来直接维护两个差分数组 ,分别区间加即可。询问时由于保证 单增,可以维护一个单调的指针往右移,加上指针位置差分数组的贡献即可。这里值域会很大,可以离散化或者直接
map。复杂度为 。说明一下为什么第一部分不是 ,注意到每次那个出现环的位置 的移动量与当前生成森林大小变化量同级,因此均摊下来每次只需枚举 个位置就可以找到环。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...