摘要: 题目链接 首先可以想到路径一定是在直径上的。 然后对每个点dfs出不经过直径的以它开始的路径最大长度,记为dis 然后就可以求出直径之后枚举左右端点,设左端点l右端点r,直径上点距离直径上起点的距离用sum[]表示 则此时的$ans=max(max(sum[l],sum[End]-sum[r]),m 阅读全文
posted @ 2018-04-16 19:14 Konoset 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题目链接 震惊!两个线段树和一个线段树竟是50分的差距! 本题可以使用二分答案,二分那个位置上最后是什么数。怎么验证呢? 把原序列改变,大于等于mid的全部变成1,小于mid的全部变成0,之后线段树排序。 最后看那个位置上是1还是0,若是1则说明最后那个位置上是个>=mid的数。 阅读全文
posted @ 2018-04-16 14:35 Konoset 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题目链接 有个结论是x到y的路径上最长边权值等于最小生成树上最长边权值,于是问题转化为最小生成树。 再考虑把问题反过来,删边变成加边。 于是变成动态维护最小生成树,LCT可以做到。 阅读全文
posted @ 2018-04-16 11:02 Konoset 阅读(117) 评论(0) 推荐(0) 编辑