POJ-1723 中位数

来源:互联网 发布:windows密钥 编辑:程序博客网 时间:2024/06/07 11:26

题目大意:

让一些分散的士兵站成一横排,问所需的最少步数。

我的理解:

这道题主要考察对中位数的理解,这也是第一次接触到这中类型的题,不太理解,借鉴了别人的思路。

传送门:点我传送

补充-->中位数 : 即在这组数据中,有一半数据比它大,有一半数据比它小。

我的代码:

#include<cstdio>#include<iostream>#include<algorithm>#define MAX_N 10005using namespace std;int x[MAX_N],y[MAX_N];int n;//士兵数目 int main(){    cin>>n;    for(int i=0;i<n;i++)        scanf("%d%d",&x[i],&y[i]);    sort(x,x+n);        for(int i=0;i<n;i++)        x[i]-=i;    sort(x,x+n);    sort(y,y+n);        int ansx=x[n/2],ansy=y[n/2];     int ans=0;    for(int i=0;i<n;i++)    {        ans+=abs(x[i]-ansx);        ans+=abs(y[i]-ansy);    }    cout<<ans<<endl;    return 0;}

原创粉丝点击