• 104.货仓选址


    原题链接:104.货仓选址


    解题思路

    A[1]~A[N]排序,设货仓建在 X 坐标处,X 左侧的商店有 P 家,右侧的商店有 Q 家。若 P < Q ,则把货仓的选址向右移动 1 单位距离,距离之和就会减小 Q - P。同理,若 P > Q ,则货仓的位置想左移动会使距离之和变小。当 P = Q 时为最优解。

    因此货仓应该建在中位数处,即把 A 排序后,当 N 为奇数时,货仓建在 A[(N+1)/2] 处最优;当 N 为偶数时,货仓建在 A[N/2]~A[N/2+1] 之间的任何位置都是最优解。

    样例代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=100100;
    int a[N],n,i,ans,sum;
    int main()
    {
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+1+n);
        sum=a[n/2+1];
        for(i=1;i<=n;i++)
            ans=ans+abs(a[i]-sum);
        cout<<ans;
        return 0;
    }
    
  • 相关阅读:
    UML画图
    UML笔记
    电脑启动顺序
    评教有感
    部署图
    活动图
    给八期授课之主板电池的思考
    给八期授课之人员分配的思考
    构件图
    cocos2dx获得机器语言
  • 原文地址:https://www.cnblogs.com/hnkjdx-ssf/p/14278492.html
Copyright © 2020-2023  润新知