检测到 KaTeX 加载失败,可能会导致文中的数学公式无法正常渲染。
#题面
#题目描述
定义一个可重数集的价值为:集合中所有数的平均数减去它们的中位数。
现在给定 个数 ,请你找出这 个数中的一个非空子集,使得这个子集的价值最大。
#输入格式
第一行一个整数 表示数字个数。
第二行 个整数 。
#输出格式
仅一行一个实数表示答案,结果保留 位小数。
#输入输出样例
样例输入 #1
6
2 3 3 5 7 8
样例输出 #1
1.66667
样例解释 #1
最优子集为 。
#数据范围与约定
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,,。
#思路
由于是选集合,所以先排序。
可以考虑固定住中位数所在的位置。不难发现以下性质:
- 最优情况一定选出奇数个数;
- 当选取长度为 时,其他的数一定是挑比中位数小的最大的 个与全部数中最大的 个,这样可以使得平均数最大;
- 将数字排序,则选取的个数与它的价值是单峰的。
于是就可以二分/三分求解了。
#代码
1 |
|