【解题报告】 CH0501 货仓选址

【解题报告】 CH0501 货仓选址

题目:货仓选址

解题思路:

中位数

中位数是一种美好的数,在数学中经常使用,这道题建立一个数组,读入数据,然后排序一下,假设货仓建在x处,x左边有p个商家,x右边有q个商家,如果p<q,那么把货仓向右移一个位置,距离之和就变小,类似地,p>q,就把货仓向左移一个位置,所以建在中间的时候距离之和最小

AC代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn=100005;
int a[maxn],n,ans,pos;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+1+n);
    int pos=a[n/2+1];
    for(int i=1;i<=n;i++)
    ans+=abs(a[i]-pos);
    cout<<ans<<endl;
    return 0;
}
posted @ 2019-08-07 00:06  wweiyi  阅读(198)  评论(0编辑  收藏  举报
js脚本