题目名称 | 1843. [国家集训队2011]切割 |
---|---|
输入输出 | nt2011_cut.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 20 |
题目来源 | cstdio 于2014-12-05加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:3, 提交:5, 通过率:60% | ||||
_Horizon | 100 | 0.012 s | 1.37 MiB | C++ |
cstdio | 100 | 0.012 s | 1.96 MiB | C++ |
mikumikumi | 100 | 0.014 s | 1.96 MiB | C++ |
mikumikumi | 90 | 0.012 s | 1.96 MiB | C++ |
_Horizon | 0 | 0.005 s | 22.35 MiB | C++ |
关于 切割 的近10条评论(全部评论) | ||||
---|---|---|---|---|
出题人也是殚精竭虑不想写spj……
|
有一棵n个节点的无根树,节点编号为1..n。每个节点有一个非负权值。现在需要把这棵树分成若干个联通块(不能有剩下的点),每个联通块的节点个数在k1和k2之间,每个联通块的得分就是该联通块中所有节点权值的平均值。总得分就是指对这个树切割后所有联通块的得分的和。你需要求出一种分割的方案使得总得分尽量小。
第一行三个整数n,k1,k2,1 ≤ k1 ≤ k2 ≤ n,2 ≤ n ≤ 50;
第二行n个整数,第i个数表示编号为i的节点的权值,每两个相邻整数之间用一个空格隔开;
接下来n-1行,每行两个整数x y,表示编号为x的节点和编号为y的节点之间有一条边。
如果存在一个切割方案,那么输出一个实数(四舍五入保留二位小数),表示所有分割方案中最小的总得分。
如果不存在切割方案,那么输出所有节点权值和的两倍。
如果对于某个测试点你的输出和标准输出完全一样,那么将得到该测试点全部的分,否则该测试点不得分(使用double类型存储数据,输出结果的整数部分保证不超过9位(十进制),使用double类型可以保证小数部分至少是6位,因而精度应该不存在问题)。
3 1 1
1 1 1
1 2
2 3
3.00
对于10%的数据,n ≤ 5;
对于30%的数据,n ≤ 10;
对于100%的数据,n ≤ 50,每个点的权值不超过10^9。
国家集训队2011 李其乐