题目传送门
UPD2:这道题题解已经半残,请结合这里的研究食用。
2017.9.15 水 UOJ 裙的时候 onepointo 童鞋说这道题没人水……于是看了看……
其实就是求一个椭圆与给定圆外切的切点坐标,这个椭圆不是标准椭圆(即主轴为 xxx 轴)。
如果我们暴力列方程的话有如下几个方程:
切点在圆上;
切点在椭圆上;
该点处圆的切线与椭圆的切线相同。
按理说是可求的,可是切点未知,解方程很难……
问题出在并不知道切点(也不会求切线……),观察到精度要求很低,可以想到等分圆周,判断每个点为切点的情况。
怎么判断切点……不是切线不会求吗……
观察到如果该点为切点,形成的椭圆长轴长应该是最短的,类比一下两个圆的位置关系可以理解到这一点。
然后就有判断依据咯……等分圆周然后找一个 aaa 最小的点就是答案……
那天晚上A了……可是出题人认为暴力太简单加强了数据……等分圆周就T了(其实是WA?)
于是改进这个等分圆周的策略……

出题人:这个距离函数长得跟正弦函数差不多

???蛤?

证明:感性理解

???蛤?
这样的话爬山就可以了……复杂度玄学
可是模拟退火不仅比爬山慢而且精度比爬山低得多……不知道为什么……
纪念写的第一份爬山,并写出了倒数的速度……(感谢Claris……(大雾))
UPD:退役之后想了想,还是感觉证明很麻烦。
下面说说成果吧……劳资推了两个晚自习了QAQ
先转化一下坐标系,让原点位于两焦点中点,两焦点连线位于 xxx 轴上,这个可以通过坐标变换公式来完成,计算完成之后再移回去即可。
下面是坐标变换公式:
设平面直角坐标系 Oxy,O′x′y′Oxy,O'x'y'Oxy,O′x′y′,O′\mathrm{O'}O′ 点在 OxyOxyOxy 坐标系下坐标为 (x0,y0)(x_0,y_0)(x0​,y0​),由 xxx 轴转到 x′x'x′ 轴转过角度为 θ\thetaθ。M\mathrm{M}M 点在 OxyOxyOxy 坐标系下坐标为 (x,y)(x,y)(x,y),在 O′x′y′O'x'y'O′x′y′ 坐标系下坐标为 (x′,y′)(x',y')(x′,y′),则满足关系:
{x′=xcos⁡θ+ysin⁡θ−x0y′=ycos⁡θ−xsin⁡θ−y0\begin{cases} x'=x\cos \theta+y\sin \theta -x_0&\\ y'=y\cos \theta-x\sin\theta-y_0 \end{cases} {x′=xcosθ+ysinθ−x0​y′=ycosθ−xsinθ−y0​​
这样就可以得到一个标准椭圆了。
联立:
{b2x2+a2y2=a2b2(x−m)2+(y−n)2=r2\begin{cases} b^2x^2+a^2y^2=a^2b^2&\\ (x-m)^2+(y-n)^2=r^2 \end{cases} {b2x2+a2y2=a2b2(x−m)2+(y−n)2=r2​
于是得到了一个非常复杂的一元四次方程,注意不要将 y2y^2y2 开根号,需要讨论正负,正确的方法是移项并将其平方。
然后根据盛金公式,令这个方程有四重根就好了。
没算,留坑不补了(真的太恶心了……)
换种方法?
椭圆上一点的切线可以这样作:令 P\mathrm{P}P 为椭圆上一点,分别连接该点与左右焦点 F1,F2\mathrm{F_1},\mathrm{F_2}F1​,F2​,则 ∠F1PF2\angle \mathrm{F_1PF_2}∠F1​PF2​ 的角分线的垂线为 P\mathrm{P}P 点处切线。
也就是说,圆心与 P\mathrm{P}P 点连线所在直线平分 ∠F1PF2\angle \mathrm{F_1PF_2}∠F1​PF2​。不过这个还得等分圆周……
没什么好做法了,不如上知乎问个问题QAQ。
Code

[三分] [BZOJ5041] LWD 的降临相关推荐

  1. bzoj 5041: LWD的降临

    前言 感谢TKJ大佬的指导 感觉我在几何这方面还要1w+年才有TKJ这么强 题意 看了半天都不是特别懂.. 还是TKJ告诉我的 就是给你一个圆,和椭圆的两个焦点,然后要你构造一个最小的椭圆,使得他与圆 ...

  2. 0x04.基本算法 — 二分和三分

    目录 一.二分 0.二分法 1.整数域上的二分 2.实数域上的二分 二.三分 0.三分求单峰函数极值 1.P3382 [模板]三分法(秦九韶求多项式+三分) 三.二分答案转化为判定 0.经典例子 1. ...

  3. python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...

    前言:. visit 1point3acres.com for more. 数据科学越来越火了,网页是数据很大的一个来源.最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,pyt ...

  4. R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)

    R语言使用R原生函数plot和lines可视化线图.并使用lty参数自定义线条类型.lwd自定义设置线条的粗细.col参数自定义线条颜色(Change R base plot line types) ...

  5. R语言ggplot2可视化使用lwd和flatten参数调整箱图(boxplot)线条的粗细:中位线和其他线条整体粗细比例更协调

    R语言ggplot2可视化使用lwd和flatten参数调整箱图(boxplot)线条的粗细:中位线和其他线条整体粗细比例更协调 目录

  6. HDU-4454 Stealing a Cake 三分枚举

    题意:给定一个点,一个圆,以及一个矩形,现在问从一个点到一个圆再到一个矩形的最短距离为多少?到达一个目标可以只挨着或者穿过它. 解法:目前只知道从一个点到圆上按照[0,PI],[PI,2*PI]的两个 ...

  7. hihoCoder #1142 : 三分求极值

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  8. CF 8D Two Friends (三分+二分)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...

  9. 七分结构三分代码-直立车想节能

    沉睡的小灰 2021-01-27 Wednesday ⊙ 原文链接: 直立车想节能--2020全国大学生智能车车竞赛经验记录之梦的开始 ▌黄粱一梦   如今回首,我不懂我一个通信工程的为什么要去做这个 ...

最新文章

  1. python利用requests进行爬虫_Python利用Requests库写爬虫(一)
  2. 为考试而准备1——无线WCDMA 网规精选(04年)
  3. 投资大佬都在看的一张报表
  4. 查找命令find和其他常用查找命令
  5. 乱谈互联网产品开发(二)
  6. 粗浅看 Tomcat系统架构分析
  7. C#几行代码让电脑蓝屏
  8. 图片轮播插件slideBox.js
  9. Eureka自我保护模式——难点重点
  10. [附源码]Python计算机毕业设计_旅游系统
  11. 名片管理系统(构建可进不可退的多级从菜单名单系统)
  12. 程序员不得不学的操作系统知识(一)
  13. hihoCoder 1272 买零食
  14. 【非原创】完全用Linux工作(上)(r4笔记第86天)
  15. Kaptcha:验证码生成
  16. Compose 学习笔记(一)—— Compose 初探
  17. GX Works3 (四):FX5U作为服务端的以太网MC协议梯形图通信编程
  18. LyNews『凌云新闻』 - 在JAVA文件中获取该项目的相对路径
  19. Adobe的视频特效编辑软件After Effects(AE) 2023版本下载与安装教程
  20. Docker搭建LAMP环境

热门文章

  1. 用户和用户组管理-用户管理命令-useradd
  2. 一种HIL测试系统的设计方法和HIL测试系统
  3. 红米k50 Magisk(面具)安装教程(备份)
  4. Photoshop CS5软件
  5. 电效应和普朗克常量的测定
  6. 什么软件测试笔记本硬盘读写,驱动精灵怎么测试硬盘 硬盘读写速度测一测你就知道了...
  7. 安卓检测手机是否root、是否刷了面具。
  8. 猿创征文|我的MacBook装了啥玩意?
  9. 计算机主机电源键,怎么才能让电脑按关机键不关机?让电脑主机上关机键失效的方法...
  10. Saleae 逻辑分析仪SX24M8使用心得