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 应用商店中已有一些专业的几何作图工具了,那么能借来一用吗?答案是 ...
随机推荐
- JavaScript实现图片切换
页面内容:一个按钮标签 一个Img标签 实现原理:通过修改Img标签的src属性,实现图片的切换 备注:代码中flag变量仅仅用作标记,也可以直接用Img标签的src属性进行判断,不过在判断时候不能 ...
- scala成长之路(1)基本语法和数据类型
scala作为JVM上的Lisp,是一种geek类型的编程语言,也一直是我等java程序员眼中的梦寐以求的一门技能,遂下定决心花一段时间好好学习scala.第一天学习,主要介绍与java在编程上的主要 ...
- 程序设计的SOLID原则
要想设计一个良好的程序,建议采用SOLID原则,若考虑了SOLID,可以使程序在模块内具有高内聚.而模块间具有低耦合的特点. SOLID原则包括5方面的内容: S---单责任原则(SRP) 一个模块只 ...
- 单片机C51 8位流水灯
#include<reg51.h> sbit P1_0=0X90; sbit P1_1=0x91; sbit P1_2=0x92; sbit P1_3=0x93; sbit P1_4=0x ...
- array_x
import java.util.*; public class array_x { public static void main(String args[]) { int a[][]={{2,4, ...
- 【SAPUI5】ODataを構成するもの
はじめに SAPUI5でアプリケーションを作るにあたり.ODataは避けては通れないトピックです.結構広いテーマなので.5-7回くらいに分けて書きたいと思います.1回目はODataの概要について説明し ...
- JVM内存管理机制和垃圾回收机制
JVM内存管理机制和垃圾回收机制 JVM结构 图片描述: java源码编译成class文件 class文件通过类加载器加载到内存 其中方法区存放的是运行时的常量.静态变量.类信息等,被所有线程共享 堆 ...
- Odoo8中安装新模块找不到的问题
为了要让系统识别出新的模块,我们需要打开用户的技术特性选项,具体在 左侧栏目->用户->administrator, 将技术特性勾选上,刷新. 然后左侧栏目->模块下面就会 ...
- BZ 600题祭
不知不觉就600题了呢. 明天就要省选了.不要让这个数字定格在这里吧!
- java字符流实现文件间的内容复制
package com.io.demo1; import java.io.FileReader; import java.io.FileWriter; public class TestFileSTr ...