bzoj#P2133. 切割
切割
题目描述
有一棵 个节点的无根树,节点编号为 。每个节点有一个非负权值。现在需要把这棵树分成若干个联通块(不能有剩下的点),每个联通块的节点个数在 和 之间,每个联通块的得分就是该联通块中所有节点权值的平均值。总得分就是指对这个树切割后所有联通块的得分的和。你需要求出一种分割的方案使得总得分尽量小。
输入格式
第一行三个整数 ;
第二行 个整数,第 个数表示编号为 的节点的权值,每两个相邻整数之间用一个空格隔开;
接下来 行,每行两个整数 ,表示编号为 的节点和编号为 的节点之间有一条边。
输出格式
如果存在一个切割方案,那么输出一个实数(四舍五入保留二位小数),表示所有分割方案中最小的总得分。如果不存在切割方案,那么输出所有节点权值和的两倍。如果对于某个测试点你的输出和标准输出完全一样,那么将得到该测试点全部的分,否则该测试点不得分(我的 sp 貌似有问题,大家可以使用 double
类型存储数据,输出结果的整数部分保证不超过 位(十进制),使用 double
类型可以保证小数部分至少是 位,因而精度应该不存在问题)。
3 1 1
1 1 1
1 2
2 3
3.00
数据规模与约定
对于 的数据,,,每个点的权值均不超过 。