POJ1723(中位数)

Posted lmjer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ1723(中位数)相关的知识,希望对你有一定的参考价值。

x坐标排序后-相应第为第几个

若本来就相邻减后值相同

如 2 3 4 8 9

减后 1 1 1 4 4

所以往中位数移就好

#include<cstdio>
#include<algorithm>
using namespace std;

const int maxn=10000+10;

int y[maxn];
int x[maxn];

int main(){
    int n;
    int ans1=0,ans2=0;
    scanf("%d",&n);
    for (int i=1;i<=n;i++){
        scanf("%d",&x[i]);
        scanf("%d",&y[i]);
    }
    sort(x+1,x+1+n);
    sort(y+1,y+1+n);
    int mid=y[(n>>1)+1];
    for (int i=1;i<=n;i++){
        ans1+=abs(y[i]-mid);
    }
    for (int i=1;i<=n;i++) x[i]-=i;
    sort(x+1,x+1+n);
    mid=x[(n>>1)+1];
    for (int i=1;i<=n;i++) ans2+=abs(x[i]-mid);
    printf("%d\n",ans1+ans2);
return 0;
}

 

以上是关于POJ1723(中位数)的主要内容,如果未能解决你的问题,请参考以下文章

poj 1723 SOLDIERS 带权中位数

机试练习08:poj3784——动态堆求解中位数

POJ 2388Who's in the Middle(水~奇数个数排序求中位数)

poj3208启示录——数位DP

poj 3050 地图5位数问题 dfs算法

POJ 3784 Running Median(动态维护中位数)