题目描述

小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为双曲线的虚半轴。

不想说话了,校赛好失败,本来看这道题着,以为麻烦并且还记着前两到没A的题所以没做,其实也很水啊。

在同一侧就算对称点,否则直接算两点距离啊!

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=; int main()
{
int T,n;
cin>>T;
for(int cas=;cas<=T;cas++)
{
double x1,y1,x2,y2,x3,y3,v;
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
scanf("%lf%lf%lf",&x3,&y3,&v);
double ans;
double tmax=-1e7,tmin=1e7;
if((fabs(y3)<1e-))
{
tmax=max(x1,x2);
tmin=min(x1,x2);
if(tmin>v||tmax<v)
x1=*v-x1;
ans=fabs(x1-x2)*fabs(x1-x2)+fabs(y1-y2)*fabs(y1-y2);
ans=sqrt(ans);
}else{
tmax=max(y1,y2);
tmin=min(y1,y2);
if(tmin>v||tmax<v)
y1=*v-y1;
ans=fabs(x1-x2)*fabs(x1-x2)+fabs(y1-y2)*fabs(y1-y2);
ans=sqrt(ans);
}
printf("Case #%d: %.6lf\n",cas,ans);
}
return ;
}

2017校赛 问题 F: 懒人得多动脑的更多相关文章

  1. cdoj第13th校赛初赛F - Fabricate equation

    http://acm.uestc.edu.cn/#/contest/show/54 F - Fabricate equation Time Limit: 3000/1000MS (Java/Other ...

  2. 广工2017校赛-F-- tmk找三角

    http://gdutcode.sinaapp.com/problem.php?cid=1056&pid=5 Description 有一棵树,树上有只tmk.他在这棵树上生活了很久,对他的构 ...

  3. 北工大2017校赛 1101:要打车的FanZzz

    题目链接: http://bjutacm.openjudge.cn/lianxi/1101/ 思路: 二分 + 二分图最大匹配. 开始的时候我想直接用最小费用流模型,后来发现这样是错误的.因为这道题实 ...

  4. 2017 校赛 问题 B: CZJ-Superman

    题目描述 “那是只鸟?那是飞机?那是——超人!” 程序员在看完<CZJ-Superman>之后,励志要成为一名“CZJ-Superman”,学会了两个特殊技能ZZZ和JJJ,足以成为一名“ ...

  5. 2017校赛 问题 D: 我知道了,你知道了吗?【递归】

    题目描述 Alice和Bob走在去学校的路上,听到两个路人的对话: 路人甲:我知道了, 你知道了吗? 路人乙:我知道你知道了,你知道了吗? 路人甲:我知道你知道我知道了,你知道了吗? 路人乙:我知道你 ...

  6. 2017 校赛 问题 E: 神奇的序列

    题目描述        Aurora在南宁发现了一个神奇的序列,即对于该序列的任意相邻两数之和都不是三的倍数.现在给你一个长度为n的整数序列,让你判断是否能够通过重新排列序列里的数字使得该序列变成一个 ...

  7. 2017校赛 C: 不爱学习的小W【模拟】

    题目描述 “叮铃铃”上课了,同学们都及时到了教室坐到了座位上,教室里有n行m列的座位而且刚好坐满.既然是上课,那老师叫学生回答问题就是再正常不过的事了,同样地,教室里也就有爱学习和不爱学习的学生了,爱 ...

  8. hnust 懒人多动脑

    问题 F: 懒人得多动脑 时间限制: 1 Sec  内存限制: 128 MB提交: 93  解决: 30[提交][状态][讨论版] 题目描述 小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每 ...

  9. “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】

    黑白图像直方图 发布时间: 2017年7月9日 18:30   最后更新: 2017年7月10日 21:08   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...

随机推荐

  1. 【php实现数据结构】单向链表

    什么是单向链表 链表是以链式存储数据的结构,其不需要连续的存储空间,链表中的数据以节点来表示,每个节点由元素(存储数据)和指针(指向后继节点)组成. 单向链表(也叫单链表)是链表中最简单的一种形式,每 ...

  2. TZ_01MyBatis_log4j.propertiies

    # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CON ...

  3. Eclipse安装Spket插件

    Eclipse安装Spket插件 1.在线安装,地址:Spket - http://www.agpad.com/update 2.下载插件包安装, 地址:http://www.spket.com/

  4. 给没有id主键的表添加id,并设置为not null 然后填充自增id

    买的ip数据库,表上不带id 使用hibernate比较麻烦,所以直接改表 增加一个字段id,类型int ALTER TABLE t_ip ADD id int; 设置id不为空设置为主键,自增 AL ...

  5. neo4j批量导入neo4j-import

    neo4j数据批量导入 1 neo4j基本参数 1.1 启动与关闭: 1.2 neo4j-admin的参数:控制内存 1.2.1 memrec 是查看参考内存设置 1.2.2 指定缓存–pagecac ...

  6. 2019.10.22 csp-s模拟测试82 反思总结

    重来重来,刚刚就当什么都没发生 今天的题属实有些迷惑,各种意义上…总之都很有难度吧.不满归不满,这套题的确不是什么没有意义的题目. 为了考验自己的学习能力记忆力,决定不写题解,扔个代码完事了 其实是懒 ...

  7. python 数据文件操作——读入数据

  8. 【洛谷P2722 USACO】 总分 01背包模板

    P2722 总分 Score Inflation 题目背景 学生在我们USACO的竞赛中的得分越多我们越高兴. 我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助 题目描述 我们可以从几个 ...

  9. 关于layui部分表单不显示的问题(Select, checkBox)

    原因: 没有使用JS进行初始化 官方说明: https://www.layui.com/doc/base/faq.html layui.use('form', function(){ var form ...

  10. git之操作准则

    每天下班前合一次代码,每次合代码先pull 不要多人同时修改同一个文件,避免冲突 在每个人自己的分支进行开发,先合并到dev分支解决冲突,确认无冲突后再合并到master