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\) 。