09 2020 档案

摘要:传送门 解题思路 题目很长,实际上就是给你一棵树,然后给你三个点,让你找到一个点,是这个点到三个点的距离和最短。 很显然的是,这个点在这三个点简单路径的上,而这三条简单路径一定有且只有一个交汇点,这个交汇点就是答案。 这就是为什么一定有一个交点,而且这个交点是其中两个点的LCA,且这个LCA是深度最 阅读全文
posted @ 2020-09-21 23:54 尹昱钦 阅读(166) 评论(0) 推荐(0) 编辑
摘要:传送门 传送门(加强版) 解题思路 这道题是我在学校里讲课的题,放上课件下载地址:https://files.cnblogs.com/files/yinyuqin/树网的核.ppt。 感觉课件里讲的还是比较详细的。 先说一下n^3做法:Floyd预处理出树中任意两点之间的距离,然后在直径上暴力枚举核 阅读全文
posted @ 2020-09-21 23:21 尹昱钦 阅读(278) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 很显然,就是在一棵树上,求两条路径有没有交点。 我们可以先分别求出两条路径两段点的LCA,设为rtab和rtcd然后分以下情况讨论: 当rtab==rtcd时,一定有交点(就是这个LCA)。 当rtab的深度大于c和d的深度或者rtcd的深度大于a和b的深度时,一定没有交点。(因为 阅读全文
posted @ 2020-09-20 00:14 尹昱钦 阅读(152) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 先考虑一个点。肯定是在树的直径的中间rt。 树的直径就是树上距离最远的两个点的路径。 对于树的直径求法,常用的有两种。 两遍bfs或dfs,从任意一个点开始,找到距离这个点最远的点i,再从i开始,找到距离i这个点距离最远的点j,则i、j就是树的直径的两个端点(证明略)。 树形dp也 阅读全文
posted @ 2020-09-13 21:46 尹昱钦 阅读(164) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 为什么要找树的重心呢?假设我们已经找到了树的重心,如果把开会地点从重心向右移走,那么对答案的贡献就是+左边的元素和-右边的元素和。而因为是树的重心,所以向右移走后左面的元素数量一定大于右面的元素数量,所以ans是比在重心的情况大的,所以最终我们选择重心。 AC代码 #include 阅读全文
posted @ 2020-09-12 23:05 尹昱钦 阅读(296) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 求LCA一般可以用倍增、树链剖分、tarjan算法解决。 这里只介绍树剖。 先处理出每一条链的链顶,然后对于每两个要求的点,判断是否在同一条链上。如果在,那么深度较浅的点就是LCA。 如果不在同一条链上,就比较两个所在链的链顶的深度,把链顶深度较低的点跳到链顶的父亲(这样就保证有答 阅读全文
posted @ 2020-09-05 21:31 尹昱钦 阅读(179) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示