CSA Round 84 Growing Trees

题目

题目大意

给定一棵有 \(n\) 个节点的树,边的权值每天变化。对于第 \(i\) 条边,在第 \(0\) 天,其权值为 \(c_i\),每天权值变化 \(a_i\)(即,在第 \(k\) 天,其权值为 \(c_i + k a_i\))。求在第 \(0\) 天到第 \(D\) 天之间,树的直径的最小值,并且求出最早在哪一天达到最小值。

分析

二分答案

二分直径取到最小值是在哪一天。

求出第 \(d\) 天树的直径的长度 \(l_d\),并且求出当天某一条直径 \(p_d\) 的长度变化率 \(r_d\)

  • \(r_d < 0\) ,则在第 \(d\) 天之前,路径 \(p_d\) 的长度必定大于 \(l_d\),这意味着在第 \(d\) 天之前,树的直径的长度也大于 \(l_d\);因此树的直径长度小于 \(l_d\) 只可能在第 \(d\) 天之后出现。

  • 同理,若 \(r_d > 0\),则在第 \(d\) 天之后,路径 \(p_d\) 的长度必定大于 \(l_d\),这意味着在第 \(d\) 天之后,树的直径的长度也大于 \(l_d\),因此树的直径长度小于 \(l_d\) 只可能在第 \(d\) 天之前出现。

  • \(r_d = 0\) 则树的直径长度的最小值就是 \(l_d\),此时需要检查在第 \(d\) 天之前树的直径长度是否也可能是 \(l_d\)

posted @ 2018-07-23 10:35  Pat  阅读(290)  评论(4编辑  收藏  举报