欢乐赛#37 T5题解
2025-01-07 19:33:20
发布于:北京
17阅读
0回复
0点赞
T5:
首先我们用sort()
函数对数组进行排序,用 m = (n - 1) // 2
找到中间值的位置。
用 target = a[m] + 1
将中间值提升到比其当前值大的下一个数。
对中间值及其右侧的所有元素进行操作,使这些元素不小于 target
,并统计所需的操作次数。
C++代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
int m = (n - 1) / 2; // 找到中间值的位置
int target = a[m] + 1; // 计算中间值
int c = 0; // 初始化操作次数
for (int i = m; i < n; i++) {
if (a[i] < target) {
c += target - a[i];
}
}
cout << c << endl;
}
return 0;
}
Python代码:
t = int(input())
for i in range(t):
n = int(input())
a = list(map(int, input().split()))
a.sort() #对列表排序
m = (n - 1) // 2 #找到中间值的位置
c = 0
target = a[m] + 1
for i in range(m, n):
if a[i] < target:
c += target - a[i] #累加需要增加的次数
print(c)
这里空空如也
有帮助,赞一个