1 条题解

  • 0
    @ 2024-9-20 23:27:46

    A1A_1 - ANA_N 排序,设货仓建在 XX 坐标处,XX 左侧的商家有 PP 家,右侧的商店有 QQ 家。若 P<QP<Q,则每把货仓的选址向右移动 11 单位距离,距离之和就会变小 QPQ-P。同理,若 P>QP>Q,则货仓的选址向左移动会使距离之和变小。当 P=QP=Q 时为最优解。

    因此货仓应给建在中位数处,即把 AA 排序后,当 NN 为奇数时,货仓建在 AN+12A_{\frac{N+1}2}处最优;当 NN 为偶数时,货仓建在 AN2A_{\frac{N}2}AN2+1A_{\frac{N}2+1}任何位置处都是最优。

    #include <bits/stdc++.h>
    
    const int N=100100;
    int a[N], n, ans;
    int main()
    {
        std::cin>>n;
        for (int i = 1; i <= n; i ++) std::cin>>a[i];
        std::sort(a+1,a+1+n);
        int sum=a[n/2+1];
        for (int i = 1; i <= n; i ++) ans = ans + abs(a[i] - sum);  //统计和中位数之间的差
        std::cout << ans << std::endl;
        return 0;
    }
    
    • 1

    信息

    ID
    108
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    33
    已通过
    15
    上传者