官方题解|奇怪的数组
2025-07-21 08:18:48
发布于:浙江
54阅读
0回复
0点赞
奇怪的数组
题目大意
现在你存在一种操作,让数组中的两个位置 , ,让第 个数 , 第 个数 。 求最少可以通过多少次操作可以让数组中的每一个数相同。
题解思路
经过一次操作,数组中的数的总和不变,如果数组中的每一个数最终相同,,因此我们确认这个数是否可行就可以了。最小次数我们只需要考虑比平均值大的数与平均数的差的和是多少。
参考代码
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using i32 = int32_t;
using i128 = __int128;
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int n;
cin >> n;
vector<i64> arr(n + 1);
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
i64 sums = 0;
for (int i = 1; i <= n; i++) {
sums += arr[i];
}
if (sums % n != 0) {
cout << -1 << endl;
} else {
i64 ans = 0;
for (int i = 1; i <= n; i++) {
ans += max(arr[i] - (sums / n), 0ll);
}
cout << ans << endl;
}
}
这里空空如也
有帮助,赞一个