前言

感谢TKJ大佬的指导
感觉我在几何这方面还要1w+年才有TKJ这么强

题意

看了半天都不是特别懂。。
还是TKJ告诉我的
就是给你一个圆,和椭圆的两个焦点,然后要你构造一个最小的椭圆,使得他与圆相切,求切点
t<=500,x,y<=1500,r<=250;
保证一定存在两个可能的切点,即两焦点构成的线段不会与给出的圆相交。

题解


通过画图可以发现,对于两焦点构成的线段不会与给出的圆相交,那么切点肯定在焦点和圆心连线与圆的两个交点之间
然后里面肯定会存在一个切点
这个切点就是离两个焦点距离和最小的,然后我们就可以用三分来做了
三分切点在哪里,就可以了
时间复杂度O(TlogX)O(TlogX)

CODE:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const double eps=1e-10;
int T;
struct node{double x,y;};
node q1,q2,q3;
double R;
double dis (node x,node y)
{return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));
}
node get (node x,node y,double r)
{node ans;double d=dis(x,y);ans.x=y.x+(x.x-y.x)*r/d;ans.y=y.y+(x.y-y.y)*r/d;return ans;
}
node gm (node x,node y){return (node){x.x+(y.x-x.x)/3,x.y+(y.y-x.y)/3};}
int main()
{scanf("%d",&T);while (T--){scanf("%lf%lf%lf%lf%lf%lf",&q1.x,&q1.y,&q2.x,&q2.y,&q3.x,&q3.y);scanf("%lf",&R);node l,r;l=get(q1,q3,R);r=get(q2,q3,R);while (abs(l.x-r.x)>eps||abs(l.y-r.y)>eps){node m1=get(gm(l,r),q3,R),m2=get(gm(r,l),q3,R);if (dis(m1,q1)+dis(m1,q2)>dis(m2,q1)+dis(m2,q2)) l=m1;else r=m2;}printf("%lf %lf\n",l.x,l.y);}return 0;
}

bzoj 5041: LWD的降临相关推荐

  1. [BZOJ]5042: LWD的分科岛 笛卡尔树+LCA

    Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦, ...

  2. [bzoj 5042]LWD的分科岛

    要求用优秀的复杂度求静态RMQ 这道题首先肯定不能带log,那可以考虑离线做,让询问右端点递增. 枚举右端点,用并查集fa[i]表示i~r的极值所在的位置,然后发现每次需要改变的位置可以用单调栈来计算 ...

  3. [三分] [BZOJ5041] LWD 的降临

    题目传送门 UPD2:这道题题解已经半残,请结合这里的研究食用. 2017.9.15 水 UOJ 裙的时候 onepointo 童鞋说这道题没人水--于是看了看-- 其实就是求一个椭圆与给定圆外切的切 ...

  4. [BZOJ5042]LWD的分科岛

    题目描述 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己. 比如 YSY 就去读了文科, LWD 知道了很气. 于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦,自己在一座 ...

  5. bzoj5042: LWD的分科岛 两种做法

    Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很 气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦 ...

  6. [bzoj5042][笛卡尔树]LWD的分科岛

    Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很 气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦 ...

  7. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  8. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  9. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

最新文章

  1. Tomcat参数设置,解决内存溢出问题
  2. keystonejs富文本问题及思考过程
  3. gets函数在使用上要注意什么问题
  4. linux文件历史,Linux文件系统的历史透视
  5. jsonp react 获取返回值_必须要会的 50 个React 面试题(下)
  6. DolphinScheduler对比Airflow
  7. jlabel字怎么变化_怎样才能把字写好?详解最科学的练字方法及步骤
  8. Java 获取命令行输入数据(命令行输入,Scanner类)
  9. python写机器人程序_从Python写入机器人框架控制台
  10. vue个人学习(三)----组件
  11. java根据微信小程序code获取用户openId
  12. 傅里叶光学-函数简介
  13. ios dat 文件读写_玩转你的iphone, IOS 13 NFC标签读写详细步骤
  14. cmd命令查询电脑序列号_什么命令可以查电脑型号、序列号
  15. python·文本分析
  16. 川土微电子|数字隔离器替代光耦817
  17. 从事软件行业的第759天,人还是要经常审视自己
  18. 马蜂窝 iOS App 启动治理:回归用户体验
  19. 如何对PDF文档进行数字签名
  20. 安全资料,限时领取!

热门文章

  1. 收藏!进口元器件的完整型号说明
  2. 第3讲、Cadence原理图工程以及原理图库的创建
  3. 深入浅出-网络OSI七层模型和TCP/IP四层模型
  4. 信息工程监理:规范工程的灵药
  5. iOS语言本地化/国际化宝典
  6. Saleae Logic添加NEC IR协议
  7. 推荐一些电驴网站,坚决扁死VERYCD论坛
  8. 认真推荐几个Python数据分析公众号
  9. 《游戏学习》Java版仿windows扫雷小游戏源码
  10. python中多线程是真的还是假的_Python中的鸡肋多线程