Description
给定一棵N个点的边权树,确定一个N的排列
{Ai}
{
A
i
}
,最大化
∑dis(Ai,Ai+1)
∑
d
i
s
(
A
i
,
A
i
+
1
)
N<=10^5
Analysis
首先可以猜一发结论,以重心为根然后排列相邻点都跨重心最优,事实上这是对的。
可以将答案写成
∑dep[Ai]+dep[Ai+1]−2dep[lca]
∑
d
e
p
[
A
i
]
+
d
e
p
[
A
i
+
1
]
−
2
d
e
p
[
l
c
a
]
的形式,上述做法使得
−2dep[lca]
−
2
d
e
p
[
l
c
a
]
每次都是
0
0
考虑一条边最多可能的计算次数,显然是这条边分割的两个点集中较小者,这样可以理解前面的也是最大的。
然后答案的计算就显然了,不过注意有两个重心的情况