CF1946A.Median of an Array
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的整数数组 a。
一个数组 q1,q2,…,qk 的中位数定义为排序后数组 p 的第 ⌈2k⌉ 个数,即 p⌈2k⌉。例如,数组 [9,5,1,2,6] 的中位数是 5,因为排序后为 [1,2,5,6,9],第 ⌈25⌉=3 个数是 5;数组 [9,2,8,3] 的中位数是 3,因为排序后为 [2,3,8,9],第 ⌈24⌉=2 个数是 3。
你可以进行若干次操作,每次选择一个整数 i(1≤i≤n),将 ai 增加 1。
你的任务是求出最少需要多少次操作,才能使数组的中位数增加。
注意,数组 a 中的数不一定各不相同。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤105),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109),表示数组 a。
保证所有测试用例中 n 的总和不超过 2×105。
输出格式
对于每个测试用例,输出一个整数,表示最少需要多少次操作才能使数组的中位数增加。
输入输出样例
输入#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,3,8],第 ⌈23⌉=2 个数是 3。原数组 [2,2,8] 的中位数为 2,排序后为 [2,2,8],第 ⌈23⌉=2 个数是 2。因此,中位数在一次操作后增加了(3>2)。
在第四个测试用例中,你可以对第 1,2,3 个数各进行一次操作,得到数组 [6,6,6,4,5],此时中位数为 6,排序后为 [4,5,6,6,6],第 ⌈25⌉=3 个数是 6。原数组 [5,5,5,4,5] 的中位数为 5,排序后为 [4,5,5,5,5],第 ⌈25⌉=3 个数是 5。因此,中位数在三次操作后增加了(6>5),且这是最少的操作次数。
在第五个测试用例中,你可以对第 1,3 个数各进行一次操作,得到数组 [3,1,3,3,1,4],此时中位数为 3,排序后为 [1,1,3,3,3,4],第 ⌈26⌉=3 个数是 3。原数组 [2,1,2,3,1,4] 的中位数为 2,排序后为 [1,1,2,2,3,4],第 ⌈26⌉=3 个数是 2。因此,中位数在两次操作后增加了(3>2),且这是最少的操作次数。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?