小美拿到了一个数组,她每次可以进行如下操作: 选择两个元素,一个加 1,另一个减 1。 小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗? 众数定义:在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。 一组数据中的众数不止一个,如数据2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据中的众数。

区块链毕设网qklbishe.com为您提供问题的解答

小美拿到了一个数组,她每次可以进行如下操作:
选择两个元素,一个加 1,另一个减 1。

小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗?
众数定义:在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。 一组数据中的众数不止一个,如数据2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据中的众数。
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<long long> nums(n);
    for (int i=0; i<n; ++i) {
        cin >> nums[i];
    }
    long long sum = accumulate(nums.begin(), nums.end(), (long long)0);
    if (sum%n==0) {
        long long avg = sum/n;
        long long ans = 0;
        for (auto a:nums) {
            ans += abs(a-avg);
        }
        cout << ans/2 << endl;
        return 0;
    }
    sort(nums.begin(), nums.end());
    function<long long(vector<long long>&, int, int)> comp = [&](vector<long long>& nums, int l, int r) {
        long long tot = 0;
        for (int i=l; i<=r; ++i) {
            tot += nums[i];
        }
        long long avg = tot/(r-l+1);
        long long avg2 = avg+1;
        long long a = 0;
        long long b = 0;
        long long c = 0;
        long long d = 0;
        for (int i=l; i<=r; ++i) {
            if (nums[i]>=avg) a+=nums[i]-avg;
            else b+=avg-nums[i];
            if (nums[i]>=avg2) c+=nums[i]-avg2;
            else d+=avg2-nums[i];
        }
        return min(max(a, b), max(c, d));
    };
    long long res1 = comp(nums, 0, n-2);
    long long res2 = comp(nums, 1, n-1);
    cout << min(res1, res2) << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

52:55
蹲一个题解
10:05

以上就是关于问题小美拿到了一个数组,她每次可以进行如下操作:
选择两个元素,一个加 1,另一个减 1。
小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗? 众数定义:在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。 一组数据中的众数不止一个,如数据2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据中的众数。的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小美拿到了一个数组,她每次可以进行如下操作: 选择两个元素,一个加 1,另一个减 1。 小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗? 众数定义:在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。 一组数据中的众数不止一个,如数据2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据中的众数。