1 条题解
-
0
自动搬运
来自洛谷,原作者为

梦梦子
**搬运于
2025-08-24 22:18:28,当前版本为作者最后更新于2020-03-12 08:47:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
记表示边权。
对进行点分治
设在当前点分树中到根的距离为
那么我们可以认为的边权为
因为,若在当前点分树中,等与点分树的重心,那么上式是成立的,否则
真实的会递归进下一个点分树被考虑到,我们可以认为这个式子依然成立,对答案不会有影响
那么我们希望在当前点分树的意义下删除一些一定不会对最终答案有贡献的
考虑以下算法:
1.首先求出当前点分树中的点,在当中的虚树。
2.对于所有当前点分树中的点,建立新点,在虚树上加一条边,边权为,我们称,我们称所有这样的为源点
3.跑两遍树,对于虚树上每个点,记录表示离最近的源点(如果有多个最近的随便记一个即可),表示与的距离
4.枚举虚树中每一条边,将,表示虚树上一条边的长度。这条边加入候选边集
所有点分树的所有候选边集大小总共,对这些边进行算法,即可算出答案。
使用预处理表求可在选出候选边集。
算法正确性证明请读者自行思考。
算法复杂度
后面那第二个只是给条边排序的复杂度,众所周知排序是很快的,因此此算法可在一定意义上认为是。是基于这种做法,因此很多使用算法或其他做法的可能会被卡常,实际上时限非常宽松。
按照此算法,上的那个子问题可做到
- 1
信息
- ID
- 5210
- 时间
- 4000ms
- 内存
- 500MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者