zoukankan      html  css  js  c++  java
  • 洛谷p5143攀爬者

    题目背景

    HKE考完GDOI之后跟他的神犇小伙伴们一起去爬山。

    题目描述

    他在地形图上标记了NN个点,每个点Pi都有一个坐标(x_i,y_i,z_i)(xi,yi,zi)。所有点对中,高度值zz不会相等。HKE准备从最低的点爬到最高的点,他的攀爬满足以下条件:

    (1) 经过他标记的每一个点;

    (2) 从第二个点开始,他经过的每一个点高度zz都比上一个点高;

    (3) HKE会飞,他从一个点Pi爬到Pj的距离为两个点的欧几里得距离。即,sqrt{(X_i-X_j)^2+(Y_i-Y_j)^2+(Z_i-Z_j)^2}(XiXj)2+(YiYj)2+(ZiZj)2

    现在,HKE希望你能求出他攀爬的总距离。

    输入格式

    第一行,一个整数NN表示地图上的点数。

    接下来N行,三个整数x_i,y_i,z_ixi,yi,zi表示第ii个点的坐标。

    输出格式

    一个实数,表示HKE需要攀爬的总距离(保留三位小数)

    输入输出样例

    输入 #1
    5
    2 2 2
    1 1 1
    4 4 4
    3 3 3
    5 5 5
    
    输出 #1
    6.928

    说明/提示

    对于100%的数据,1leq Nleq 500001N50000,答案的范围在double范围内。

    虽然是个黄题,但是结构体学好了一次ac,本题只需排序结构体就行。

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    struct fuck
    {
        int x,y,z;
    }a[100005];
    bool cmp(fuck a,fuck b)
    {
        if(a.z<b.z)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    int main()
    {
        int n;
        double ans;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].x>>a[i].y>>a[i].z;
        }
        sort(a+1,a+n+1,cmp);
        for(int i=1;i<=n-1;i++)
        {
            ans+=sqrt((a[i+1].x-a[i].x)*(a[i+1].x-a[i].x)+(a[i+1].y-a[i].y)*(a[i+1].y-a[i].y)+(a[i+1].z-a[i].z)*(a[i+1].z-a[i].z));
        }
        printf("%.3lf",ans);
        return 0;
    }
  • 相关阅读:
    28. css样式中px转rem
    27.用webpack自搭react和vue框架
    26.webpack 入门
    25.redux回顾,redux中的action函数异步
    24.redux
    23.react-router 路由
    22.2、react生命周期与react脚手架(二)
    22.1 、react生命周期(一)
    21.react 组件通信
    const关键字的作用
  • 原文地址:https://www.cnblogs.com/lizhengde/p/13246025.html
Copyright © 2011-2022 走看看