hdu6097 Mindis(几何)
题解:
这里是用解析解的做法,
我们发现如果以P和Q做椭圆,那么当椭圆与圆相切的时候,答案最优
那么方程就是这样的

联立之后,解delta等于0,可以得到

答案就是2a了
注意不一定任何情况都有解,当delta等于0时,不一定存在那个点,这个时候显然就为中垂线与圆的交点,特判一下即可
此外点重合也要特判!
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int T;
struct point{
double x, y;
point() { x = y = ;}
point(double _x, double _y):x(_x), y(_y) { }
}p[];
const double eps = 1e-;
double dis(point A, point B){
return sqrt(pow(A.x - B.x, )+pow(A.y - B.y, ));
}
double r, c, t, a;
int main()
{
cin>>T;
while(T--){
scanf("%lf%lf%lf%lf%lf",&r,&p[].x,&p[].y,&p[].x,&p[].y);
c = dis(p[], p[])/;
t = sqrt(pow(dis(p[], p[]), ) - c*c);
a = r*c/sqrt(t*t+c*c);
if(abs(c) < eps){
point C = point(c, );
point D = point(, -r+t);
printf("%.10f\n", *dis(C, D));
continue;
}
if(abs(a - c) < eps) {
printf("%.10f\n", *a);
continue;
}
double B = *t*(a*a-c*c);
double A = c*c;
double Y = -B/A/;
if((Y-t)*(Y-t) - r*r > eps){
point C = point(c, );
point D = point(, -r+t);
printf("%.10f\n", *dis(C, D));
} else {
printf("%.10f\n", *a);
}
}
}
hdu6097 Mindis(几何)的更多相关文章
- HDU6097 Mindis
题目链接:https://cn.vjudge.net/problem/HDU-6097 知识点: 计算几何.圆的反演 题目大意: 已知一个圆心在原点的圆的半径,再给定 \(P, Q\) 两点坐标( \ ...
- 【计算几何】【圆反演】hdu6097 Mindis
给你一个中心在原点的圆,再给你俩在圆内且到原点距离相等的点P,Q,让你在圆上求一点D,最小化DP+DQ. http://blog.csdn.net/qq_34845082/article/detail ...
- hdu 6097 Mindis(数学几何,圆心的反演点)
Mindis Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- BZOJ-1822 Frozen Nova 冷冻波 计(jie)算(xi)几何+二分+最大流判定+经典建图
这道逼题!感受到了数学对我的深深恶意(#‵′).... 1822: [JSOI2010]Frozen Nova 冷冻波 Time Limit: 10 Sec Memory Limit: 64 MB S ...
- 关于Three.js基本几何形状之SphereGeometry球体学习
一.有关球体SphereGeometry构造函数参数说明 <1>.SphereGeometry(radius, widthSegments, heightSegments, phiStar ...
- 几何服务,cut功能测试
关于几何服务 几何服务用于辅助应用程序执行各种几何计算,如缓冲区.简化.面积和长度计算以及投影.在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务. 问题 ...
- 几何服务,cut功能,输入要素target(修改后)内容。
几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...
- 几何服务,cut功能,输入要素target(修改前)内容。
几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...
- 如何让你的UWP应用程序无缝调用几何作图
有时候需要编辑一些几何图形,如三角形,圆锥曲线等,在UWP应用中加入这些几何作图功能是件费时间又很难做好的事.其实Windows 10 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...
随机推荐
- Linux环境下tomcat如何热部署
1.修改tomcat配置文件 1.1第一步修改tomcat-users.xml <role rolename="manager-gui" /> <role rol ...
- filter-policy和AS-PATH-FILTER过滤BGP路由条目
Filter-policy过滤BGP路由条目 一:根据项目需求搭建好拓扑图如下: 二:配置 1:对项目图做理论分析,首先RT1和RT2属于EBGP(不同自治系统之间的直连路由),而RT2和RT3属于I ...
- MySQL数据库操作(DDL)
一.创建数据库 语法:create database 数据库名称 [库选项]; 库选项:(可选)数据库的属性,一般有字符集与校对集,保存在数据库所属文件夹下的opt文件 charset:字符集,表示该 ...
- YII2.O学习三 前后台用户数据表分离
之前我们完成了Advanced 模板安装,也完成了安装adminlte 后台模板,这一步是针对前端和后台用户使用不同的数据库表来管理,做到前后台用户分离的效果: 复制一张user数据表并重命名为adm ...
- php 操作RabbitMQ
本文摘抄自:https://www.cnblogs.com/alin-qu/p/8312874.html php 操作RabbitMQ 基本流程图 如果exchange 没有绑定queue,则消息 ...
- ZooKeeper(1)-入门
一. Zookeeper工作机制 二.Zookeeper特点 三.Zookeeper数据结构 四.Zookeeper应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡
- clear()、sync()、ignore()
#include <iostream> using namespace std; int main() { int a; cin>>a; cout<<cin.rds ...
- LINQ查询操作符
·First - 返回集合中的第一个元素:不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值):不延迟 ·Last - 返回集合中的最后一个元素:不延迟 ·Las ...
- XML与Object的范型转换
前段时间做object转换xml想了很多,所有打算整理下 做成以下的通用方法. public static bool ObjectToXml<T>(string filePath, T t ...
- cachel-control
nodejs: res.set('Cache-Control', 'public, max-age=31557600'); express全局设置: app.use(express.sta ...