• hnust 懒人多动脑


    问题 F: 懒人得多动脑

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 93  解决: 30
    [提交][状态][讨论版]

    题目描述

    小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每日所需的生活水源在一条平行该双曲线准线的直线上,设它的值为v。大家都知道,每天都是要喝水的,但是小D有点懒,他希望自己能在去上学或者回家的时候顺路打桶水,并且走最短的路,你能帮助他吗?

    下图所示样例的情况,已知焦点在x轴上,那么其准线垂直x轴,即x=v,故可作出河流所在直线如图,那么最优路线为从家A到点C(0,5.8888889)取水,然后再到学校B,那么总长度就是这两段各自距离之和,即|AC| + |CB|。

    输入

    第一行输入数据组数T(T <= 100)。

    每组数据包括四个坐标,其格式如下:

    第一行输入点A的坐标X1,Y1

    第二行输入点B的坐标X2,Y2

    第三行输入点F的坐标X3,Y3

    第四行输入值v

    保证双曲线焦点在坐标轴上,

    保证A,B点的坐标以及v值均为整数且绝对值不大于1000,保证F坐标值不超过1000.0。

    相邻两组数据之间有一空行。

    输出

    输出”Case #x: s”,x表示数据组数,s表示该最短路的距离,保留6位小数

    样例输入

    2
    40 40
    -920 480
    0.000000 73.9889111581
    636
    
    5 7
    4 5
    4.9286577 0
    0 
    

    样例输出

    Case #1: 1219.468737
    Case #2: 9.219544
    

    提示


    双曲线的定义:平面内到两定点的距离差的绝对值为定长的点的轨迹叫做双曲线。

    若设焦点为F1,F2,则双曲线上任意一点P满足 | |PF1| - |PF2| | = 2*a。



    若焦点在 x轴,则对应双曲线方程为x^2/a^2 - y^2/b^2 = 1,焦点F坐标为(c,0),其中c为a^2 + b^2,其准线为x = ±a^2/c

    若焦点在 y轴,则对应双曲线方程为y^2/a^2 - x^2/b^2 = 1,焦点F坐标为(0,c),其中c为a^2 + b^2,其准线为y = ±a^2/c



    上述a为双曲线的实半轴,b为双曲线的虚半轴。

     
     
    这道题就是简单的数学。
     
    #include <cstdio>
    #include <cmath>
    #define swapi(a,b,tt) {tt=a;a=b;b=tt;}
    int main()
    {
        int icase;
        scanf("%d",&icase);
        for(int t=1;t<=icase;t++)
        {
            double x,y,x1,y1,x2,y2,fx,fy,v,sum,tt;
            scanf("%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&fx,&fy,&v);
            if(fy)
            {
                swapi(y1,x1,tt);
                swapi(y2,x2,tt);
            }
            if(x1<x2)
            {
                swapi(x1,x2,tt);
                swapi(y1,y2,tt);
            }
            if(x2<v&&v<x1)
            {
                x=x1-x2;
                y=y1-y2;
            }
            else
            {
                x=x1+x2-2*v;
                y=y1-y2;
            }
            sum=sqrt(x*x+y*y);
            printf("Case #%d: %.6lf
    ",t,sum);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Spark SQL概述
    Spark编程进阶篇
    数据的读取与保存
    键值对RDD数据分区器
    Spark master的HA实战案例
    生产环境中zookeeper分布式集群部署实战案例
    Spark的RDD编程实战案例
    部署Spark历史服务器
    Spark的Standalone运行模式部署实战案例
    将开发的程序打包到正式环境中运行实战篇
  • 原文地址:https://www.cnblogs.com/wandso/p/10062041.html
Copyright © 2020-2023  润新知