CF1557A.Ezzat and Two Subsequences

入门

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Ezzat has an array of nn integers (maybe negative). He wants to split it into two non-empty subsequences aa and bb, such that every element from the array belongs to exactly one subsequence, and the value of f(a)+f(b)f(a) + f(b) is the maximum possible value, where f(x)f(x) is the average of the subsequence xx.

A sequence xx is a subsequence of a sequence yy if xx can be obtained from yy by deletion of several (possibly, zero or all) elements.

The average of a subsequence is the sum of the numbers of this subsequence divided by the size of the subsequence.

For example, the average of [1,5,6][1,5,6] is (1+5+6)/3=12/3=4(1+5+6)/3 = 12/3 = 4, so f([1,5,6])=4f([1,5,6]) = 4.

Ezzat 有一个包含 nn 个整数(可能为负数)的数组。他希望将该数组划分为两个非空子序列 aa 和 bb,使得数组中的每个元素恰好属于其中一个子序列,且 f(a)+f(b)f(a) + f(b) 的值达到最大可能值,其中 f(x)f(x) 表示子序列 xx 的平均值。

若序列 xx 可通过从序列 yy 中删除若干(可能为零个或全部)元素得到,则称 xx 是 yy 的一个子序列。

子序列的平均值定义为该子序列中所有数字之和除以该子序列的长度。

例如,[1,5,6][1,5,6] 的平均值为 (1+5+6)/3=12/3=4(1+5+6)/3 = 12/3 = 4,因此 f([1,5,6])=4f([1,5,6]) = 4。

输入格式

The first line contains a single integer tt (1≤t≤1031 \le t \le 10^3)— the number of test cases. Each test case consists of two lines.

The first line contains a single integer nn (2≤n≤1052 \le n \le 10^5).

The second line contains nn integers a1,a2,…,ana_1, a_2, \ldots, a_n (−109≤ai≤109-10^9 \le a_i \le 10^9).

It is guaranteed that the sum of nn over all test cases does not exceed 3⋅1053\cdot10^5.

第一行包含一个整数 tt(1≤t≤1031 \le t \le 10^3),表示测试用例的数量。每个测试用例包含两行。

第一行包含一个整数 nn(2≤n≤1052 \le n \le 10^5)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(−109≤ai≤109-10^9 \le a_i \le 10^9)。

保证所有测试用例的 nn 之和不超过 3⋅1053\cdot10^5。

输出格式

For each test case, print a single value — the maximum value that Ezzat can achieve.

Your answer is considered correct if its absolute or relative error does not exceed 10−610^{-6}.

Formally, let your answer be aa, and the jury's answer be bb. Your answer is accepted if and only if ∣a−b∣max⁡(1,∣b∣)≤10−6\frac{|a - b|}{\max{(1, |b|)}} \le 10^{-6}.

对于每个测试用例,输出一个值——Ezzat 能够达到的最大值。

若你的答案的绝对误差或相对误差不超过 10−610^{-6},则视为正确。

形式化地,设你的答案为 aa,评测组的答案为 bb。当且仅当 ∣a−b∣max⁡(1,∣b∣)≤10−6\frac{|a - b|}{\max{(1, |b|)}} \le 10^{-6} 时,你的答案被接受。

输入输出样例

  • 输入#1

    4
    3
    3 1 2
    3
    -7 -6 -6
    3
    2 2 2
    4
    17 3 5 -3

    输出#1

    4.500000000
    -12.500000000
    4.000000000
    18.666666667

说明/提示

In the first test case, the array is [3,1,2][3, 1, 2]. These are all the possible ways to split this array:

  • a=[3]a = [3], b=[1,2]b = [1,2], so the value of f(a)+f(b)=3+1.5=4.5f(a) + f(b) = 3 + 1.5 = 4.5.
  • a=[3,1]a = [3,1], b=[2]b = [2], so the value of f(a)+f(b)=2+2=4f(a) + f(b) = 2 + 2 = 4.
  • a=[3,2]a = [3,2], b=[1]b = [1], so the value of f(a)+f(b)=2.5+1=3.5f(a) + f(b) = 2.5 + 1 = 3.5.

Therefore, the maximum possible value 4.54.5.

In the second test case, the array is [−7,−6,−6][-7, -6, -6]. These are all the possible ways to split this array:

  • a=[−7]a = [-7], b=[−6,−6]b = [-6,-6], so the value of f(a)+f(b)=(−7)+(−6)=−13f(a) + f(b) = (-7) + (-6) = -13.
  • a=[−7,−6]a = [-7,-6], b=[−6]b = [-6], so the value of f(a)+f(b)=(−6.5)+(−6)=−12.5f(a) + f(b) = (-6.5) + (-6) = -12.5.

Therefore, the maximum possible value −12.5-12.5.

在第一个测试用例中,数组为 [3,1,2][3, 1, 2]。以下是将该数组分割的所有可能方式:

  • a=[3]a = [3],b=[1,2]b = [1,2],则 f(a)+f(b)=3+1.5=4.5f(a) + f(b) = 3 + 1.5 = 4.5。
  • a=[3,1]a = [3,1],b=[2]b = [2],则 f(a)+f(b)=2+2=4f(a) + f(b) = 2 + 2 = 4。
  • a=[3,2]a = [3,2],b=[1]b = [1],则 f(a)+f(b)=2.5+1=3.5f(a) + f(b) = 2.5 + 1 = 3.5。

因此,最大可能值为 4.54.5。

在第二个测试用例中,数组为 [−7,−6,−6][-7, -6, -6]。以下是将该数组分割的所有可能方式:

  • a=[−7]a = [-7],b=[−6,−6]b = [-6,-6],则 f(a)+f(b)=(−7)+(−6)=−13f(a) + f(b) = (-7) + (-6) = -13。
  • a=[−7,−6]a = [-7,-6],b=[−6]b = [-6],则 f(a)+f(b)=(−6.5)+(−6)=−12.5f(a) + f(b) = (-6.5) + (-6) = -12.5。

因此,最大可能值为 −12.5-12.5。

输入解题思路,AI测评打分。不知道怎么写?

首页