CF1946A.Median of an Array

入门

通过率:0%

AC君温馨提醒

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

题目描述

给定一个长度为 nn 的整数数组 aa。

一个数组 q1,q2,…,qkq_1, q_2, \ldots, q_k 的中位数定义为排序后数组 pp 的第 ⌈k2⌉\lceil \frac{k}{2} \rceil 个数,即 p⌈k2⌉p_{\lceil \frac{k}{2} \rceil}。例如,数组 [9,5,1,2,6][9, 5, 1, 2, 6] 的中位数是 55,因为排序后为 [1,2,5,6,9][1, 2, 5, 6, 9],第 ⌈52⌉=3\lceil \frac{5}{2} \rceil = 3 个数是 55;数组 [9,2,8,3][9, 2, 8, 3] 的中位数是 33,因为排序后为 [2,3,8,9][2, 3, 8, 9],第 ⌈42⌉=2\lceil \frac{4}{2} \rceil = 2 个数是 33。

你可以进行若干次操作,每次选择一个整数 ii(1≤i≤n1 \le i \le n),将 aia_i 增加 11。

你的任务是求出最少需要多少次操作,才能使数组的中位数增加。

注意,数组 aa 中的数不一定各不相同。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051 \le n \le 10^5),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9),表示数组 aa。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5。

输出格式

对于每个测试用例,输出一个整数,表示最少需要多少次操作才能使数组的中位数增加。

输入输出样例

  • 输入#1

    8
    3
    2 2 8
    4
    7 3 3 1
    1
    1000000000
    5
    5 5 5 4 5
    6
    2 1 2 3 1 4
    2
    1 2
    2
    1 1
    4
    5 5 5 5

    输出#1

    1
    2
    1
    3
    2
    1
    2
    3

说明/提示

在第一个测试用例中,你可以对第一个数进行一次操作,得到数组 [3,2,8][3, 2, 8],此时中位数为 33,因为排序后为 [2,3,8][2, 3, 8],第 ⌈32⌉=2\lceil \frac{3}{2} \rceil = 2 个数是 33。原数组 [2,2,8][2, 2, 8] 的中位数为 22,排序后为 [2,2,8][2, 2, 8],第 ⌈32⌉=2\lceil \frac{3}{2} \rceil = 2 个数是 22。因此,中位数在一次操作后增加了(3>23 > 2)。

在第四个测试用例中,你可以对第 1,2,31, 2, 3 个数各进行一次操作,得到数组 [6,6,6,4,5][6, 6, 6, 4, 5],此时中位数为 66,排序后为 [4,5,6,6,6][4, 5, 6, 6, 6],第 ⌈52⌉=3\lceil \frac{5}{2} \rceil = 3 个数是 66。原数组 [5,5,5,4,5][5, 5, 5, 4, 5] 的中位数为 55,排序后为 [4,5,5,5,5][4, 5, 5, 5, 5],第 ⌈52⌉=3\lceil \frac{5}{2} \rceil = 3 个数是 55。因此,中位数在三次操作后增加了(6>56 > 5),且这是最少的操作次数。

在第五个测试用例中,你可以对第 1,31, 3 个数各进行一次操作,得到数组 [3,1,3,3,1,4][3, 1, 3, 3, 1, 4],此时中位数为 33,排序后为 [1,1,3,3,3,4][1, 1, 3, 3, 3, 4],第 ⌈62⌉=3\lceil \frac{6}{2} \rceil = 3 个数是 33。原数组 [2,1,2,3,1,4][2, 1, 2, 3, 1, 4] 的中位数为 22,排序后为 [1,1,2,2,3,4][1, 1, 2, 2, 3, 4],第 ⌈62⌉=3\lceil \frac{6}{2} \rceil = 3 个数是 22。因此,中位数在两次操作后增加了(3>23 > 2),且这是最少的操作次数。

由 ChatGPT 4.1 翻译

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

首页