bzoj 5041: LWD的降临
前言
感谢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的降临相关推荐
- [BZOJ]5042: LWD的分科岛 笛卡尔树+LCA
Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦, ...
- [bzoj 5042]LWD的分科岛
要求用优秀的复杂度求静态RMQ 这道题首先肯定不能带log,那可以考虑离线做,让询问右端点递增. 枚举右端点,用并查集fa[i]表示i~r的极值所在的位置,然后发现每次需要改变的位置可以用单调栈来计算 ...
- [三分] [BZOJ5041] LWD 的降临
题目传送门 UPD2:这道题题解已经半残,请结合这里的研究食用. 2017.9.15 水 UOJ 裙的时候 onepointo 童鞋说这道题没人水--于是看了看-- 其实就是求一个椭圆与给定圆外切的切 ...
- [BZOJ5042]LWD的分科岛
题目描述 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己. 比如 YSY 就去读了文科, LWD 知道了很气. 于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦,自己在一座 ...
- bzoj5042: LWD的分科岛 两种做法
Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很 气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦 ...
- [bzoj5042][笛卡尔树]LWD的分科岛
Description 大家都知道在文理分科的时候总是让人纠结的,纠结的当然不只是自己.比如 YSY 就去读了文科, LWD 知道了很 气.于是他就去卡了 BZOJ 测评机, 晚上他做了一个谜一样的梦 ...
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...
- S-T平面图中利用最短路求最小割(BZOJ 1001)
BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...
- BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)
题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...
最新文章
- Tomcat参数设置,解决内存溢出问题
- keystonejs富文本问题及思考过程
- gets函数在使用上要注意什么问题
- linux文件历史,Linux文件系统的历史透视
- jsonp react 获取返回值_必须要会的 50 个React 面试题(下)
- DolphinScheduler对比Airflow
- jlabel字怎么变化_怎样才能把字写好?详解最科学的练字方法及步骤
- Java 获取命令行输入数据(命令行输入,Scanner类)
- python写机器人程序_从Python写入机器人框架控制台
- vue个人学习(三)----组件
- java根据微信小程序code获取用户openId
- 傅里叶光学-函数简介
- ios dat 文件读写_玩转你的iphone, IOS 13 NFC标签读写详细步骤
- cmd命令查询电脑序列号_什么命令可以查电脑型号、序列号
- python·文本分析
- 川土微电子|数字隔离器替代光耦817
- 从事软件行业的第759天,人还是要经常审视自己
- 马蜂窝 iOS App 启动治理:回归用户体验
- 如何对PDF文档进行数字签名
- 安全资料,限时领取!