题解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: 分数线划定题解