51Nod-1108-距离之和最小 V2

来源:互联网 发布:下载了软件打不开 编辑:程序博客网 时间:2024/06/18 15:23

ACM模版

描述

描述

题解

这里完全可以将一个点的X、Y、Z拆解开来,分别求距离之和最小,然后加在一起即可。

代码

#include <iostream>#include <algorithm>using namespace std;const int MAXN = 1e4 + 10;int PX[MAXN];int PY[MAXN];int PZ[MAXN];int main(int argc, const char * argv[]){    int N;    cin >> N;    for (int i = 0; i < N; i++)    {        cin >> PX[i] >> PY[i] >> PZ[i];    }    sort(PX, PX + N);    sort(PY, PY + N);    sort(PZ, PZ + N);    long long sum = 0;    int flag = N - 1;    for (int i = 0; i < flag; i++, flag--)    {        sum += PX[flag] - PX[i] + PY[flag] - PY[i] + PZ[flag] - PZ[i];    }    std::cout << sum << '\n';    return 0;}

参考

51Nod 1096 距离之和最小

0 0
原创粉丝点击