[AGC005C] Tree Restoring
\(\text{solution}\)
欸嘿,收获紫题一道。
考虑一件事情,就是一个点到最远的点那么这个点一定是直径两个端点之一。
然后就非常好做了,\(a_i\) 最大的明显是直径的两个端点,其个数必须大于等于 \(2\),因为至少要有两个才能形成一条直径。
还有就是,直径中心的点的值我们是可以算出来的,设中间这个值为 \(mini\),那么 \(mini = \left\lfloor \frac{maxi + 1}{2} \right\rfloor\),\(maxi\) 就是直径端点的 \(a_i\),很明显,中间的这个值一定是最小的,可以自己画图推一下。如果有小于 \(mini\) 的点,就显然不可行。
然后就是,从 \(mini + 1 \sim maxi\) 点值必须有两个以上,因为直径都必须要两个。至于 \(mini\),看 \(maxi\) 的奇偶性,如果 \(maxi\) 是奇数,那么就必须只能有两个,如果是偶数,那么就必须只能有一个。
然后这道题就做完了。

浙公网安备 33010602011771号