题目背景HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。题目描述HKE 在地形图上标记了 N 个点每个点 Pi 都有一个坐标 (xi,yi,zi)且在所有点对中高度值 z 不会相等。HKE 准备从最低的点爬到最高的点他的攀爬满足以下条件经过他标记的每一个点从第二个点开始他经过的每一个点高度 z 都比上一个点高HKE 会飞他从一个点 Pi 爬到 Pj 的距离为两个点的欧几里得距离即 (Xi−Xj)2(Yi−Yj)2(Zi−Zj)2。现在HKE 希望你能求出他攀爬的总距离。输入格式第一行一个整数 N 表示地图上的点数。接下来 N 行每行三个整数 xi,yi,zi表示第 i 个点的坐标。输出格式一个实数表示 HKE 需要攀爬的总距离保留三位小数。输入输出样例输入 #1复制5 2 2 2 1 1 1 4 4 4 3 3 3 5 5 5输出 #1复制6.928说明/提示对于 100% 的数据1≤N≤50000答案在double类型的表示范围内。题解#include iostreamusing namespace std;#include cmath#include iomanip#include algorithmstruct point{int x,y,z;};bool compare(point p1,point p2){return p1.zp2.z;}double jisuan(point p1,point p2){double tempsqrt((p2.x-p1.x)*(p2.x-p1.x)(p2.y-p1.y)*(p2.y-p1.y)(p2.z-p1.z)*(p2.z-p1.z));return temp;}int main(){int n;cinn;struct point p[50005];for(int i0;in;i){cinp[i].xp[i].yp[i].z;}sort(p,pn,compare);double sum0;for(int i0;in-1;i){sumjisuan(p[i],p[i1]);}coutfixedsetprecision(3)sumendl;system(pause);return 0;}
洛谷:P5143 攀爬者
题目背景HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。题目描述HKE 在地形图上标记了 N 个点每个点 Pi 都有一个坐标 (xi,yi,zi)且在所有点对中高度值 z 不会相等。HKE 准备从最低的点爬到最高的点他的攀爬满足以下条件经过他标记的每一个点从第二个点开始他经过的每一个点高度 z 都比上一个点高HKE 会飞他从一个点 Pi 爬到 Pj 的距离为两个点的欧几里得距离即 (Xi−Xj)2(Yi−Yj)2(Zi−Zj)2。现在HKE 希望你能求出他攀爬的总距离。输入格式第一行一个整数 N 表示地图上的点数。接下来 N 行每行三个整数 xi,yi,zi表示第 i 个点的坐标。输出格式一个实数表示 HKE 需要攀爬的总距离保留三位小数。输入输出样例输入 #1复制5 2 2 2 1 1 1 4 4 4 3 3 3 5 5 5输出 #1复制6.928说明/提示对于 100% 的数据1≤N≤50000答案在double类型的表示范围内。题解#include iostreamusing namespace std;#include cmath#include iomanip#include algorithmstruct point{int x,y,z;};bool compare(point p1,point p2){return p1.zp2.z;}double jisuan(point p1,point p2){double tempsqrt((p2.x-p1.x)*(p2.x-p1.x)(p2.y-p1.y)*(p2.y-p1.y)(p2.z-p1.z)*(p2.z-p1.z));return temp;}int main(){int n;cinn;struct point p[50005];for(int i0;in;i){cinp[i].xp[i].yp[i].z;}sort(p,pn,compare);double sum0;for(int i0;in-1;i){sumjisuan(p[i],p[i1]);}coutfixedsetprecision(3)sumendl;system(pause);return 0;}