题解1
#include<iostream> #include<cmath> #include<algorithm> #include<iomanip> using namespace std; int i,j; double d; //表示总距离 struct distan{ int x,y,z; }dis[50010]; bool mycmp(distan a,distan b){ return(a.z<b.z); //高度升序排列 } int main(){ int n; //n代表选手总数 m代表计划录取人数 cin>>n; for(i=1; i<=n; i++){ //输入 cin>>dis[i].x>>dis[i].y>>dis[i].z; } sort(dis+1,dis+n+1,mycmp);//排序 for(i=1; i<n; i++){ //求总距离 d+=sqrt(pow(dis[i].x-dis[i+1].x,2)+pow(dis[i].y-dis[i+1].y,2)+pow(dis[i].z-dis[i+1].z,2)); } cout<<fixed<<setprecision(3)<<d; return 0; }

(图片来源网络,侵删)
题解2
#include <bits/stdc++.h> using namespace std; int n,m; double ans; struct node{ int a,b,c; }a[10000005]; bool cmp(node x,node y){按高度排序 return x.c<y.c; } int main(){ cin>>n; for(int i=1;i<=n;i++){输入 cin>>a[i].a>>a[i].b>>a[i].c; } sort(a+1,a+1+n,cmp); for(int i=1;i<n;i++){计算所以距离和 ans+=sqrt((a[i].a-a[i+1].a)*(a[i].a-a[i+1].a)+(a[i].b-a[i+1].b)*(a[i].b-a[i+1].b)+(a[i].c-a[i+1].c)*(a[i].c-a[i+1].c)); } printf("%.3f",ans); }
标签: 编程练习 基础2920: 分数线划定题解