考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h>
using namespace std;
const int LEN = 5e4 + 50;
struct Node { int x_, y_, z_; } arr[LEN];
int main() { int n; cin >> n; for (int i = 0; i < n; ++i) cin >> arr[i].x_ >> arr[i].y_ >> arr[i].z_; double sum = 0; sort(arr, arr + n, [](Node a, Node b) -> bool { return a.z_ < b.z_; }); for (int i = 0; i < n - 1; ++i) { sum += sqrt(pow(arr[i].x_ - arr[i + 1].x_, 2) + pow(arr[i].y_ - arr[i + 1].y_, 2) + pow(arr[i].z_ - arr[i + 1].z_, 2)); } cout << fixed << setprecision(3) << sum; return 0; }
|
思路
没有坑点,根据高度z排序后,按序统计相邻节点的欧几里得距离即可