题目大意大家可以打开题目描述中PDF看,下面开始讲题解。
一、思维尝试:
首先我们思考,为了让总的结果最小,整个树中权值最大的点一定在他的父亲节点染色之后马上染色。所以我们首先考虑将这两个点合并,继续在整个图中找最大权值……最后只剩根节点的时候合并结束,输出结果即可。
这个思路看起来不错,但是有一个问题:这个“最大权值”指的是什么呢?如果仅仅指每一个点的初始染色代价,那么只要构造一个像这样的图:(节点上的值表示每个点染色代价)
(插一句:这个数据是我们机房巨佬 @sdfz171047 造出来的,真的好巧(du)妙(liu))
你会发现我们合并顺序是这样的:
10->2
5->1
4->2
2->1
这样的话,相当于的染色顺序为:
1->5->2->10->4
它的代价为:
1*1+5*2+2*3+10*4+4*5=77
然而,如果你用下面这个顺序染色:
1->2->10->5->4
代价就是:
1*1+2*2+3*10+5*4+4*5=75