专栏文章
题解:P14211 [ROI 2016 Day2] 快递服务
P14211题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mingorvt
- 此快照首次捕获于
- 2025/12/02 02:07 3 个月前
- 此快照最后确认于
- 2025/12/02 02:07 3 个月前
[ROI 2016 Day2] 快递服务
STOOOOOOOOOOOO cyx CCCCCCCCCCCCOTZ。
首先考虑所有路径都是从 开始的一条链怎么做。根据经典结论,交集最大的一定另一个端点按照
dfn 排序后相邻的两条链或者是最靠前和最靠后的两条链。直接求 LCA 计算即可。考虑拓展。先将两条路径
LCA 不同的情况的答案求出来,可以将路径拆为 和 两种。用树形 dp 对每个子树求出可以连向该子树中任意一个点的 中深度最小的和次小的,答案就是该子树根节点的深度减去次小的深度。然后考虑
LCA 相同的情况,此时形态如下图所示:
考虑枚举 ,此时的答案为 。这启发我们维护该子树内的路径端点,并在合并两个子树时统计答案。利用启发式合并维护出子树内端点集合,每次插入一个端点前先更新答案。根据前面路径全都为 开始的一条链的做法,我们在
set 中按照 dfn 排序,每次查询二分找到当前插入点的前驱和后继更新答案即可。这个时候还有一个问题。对于一条链,如果其两个端点都在当前的子树内显然不应该将其统计进答案,所以需要对于每个路径在
LCA 处将其删去。最终时间复杂度 ,可以通过,细节比较多,可以看代码。
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...