每日一题 day51 打卡

Analysis

这道题是用非常恶心的三分套三分做的,有一个技巧是不要枚举坐标,枚举两条线段构成三角形的相似比就好了。

了解思路就还挺好写的(尽管我还调了三天)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
#define rep(i,s,e) for(register int i=s;i<=e;++i)
#define dwn(i,s,e) for(register int i=s;i>=e;--i)
using namespace std;
inline int read()
{
int x=,f=;
char c=getchar();
while(c<''||c>'') {if(c=='-') f=-; c=getchar();}
while(c>=''&&c<='') {x=x*+c-''; c=getchar();}
return f*x;
}
inline void write(int x)
{
if(x<) {putchar('-'); x=-x;}
if(x>) write(x/);
putchar(x%+'');
}
struct node
{
double x,y;
}a,b,c,d;
double p,q,r;
inline node calc_point(node a,node b,double k)
{
node point;
point.x=(b.x-a.x)*k+a.x;
point.y=(b.y-a.y)*k+a.y;
return point;
}
inline double calc_dis(node a,node b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
inline double check_two(double k1,double k2)
{
node point_one=calc_point(a,b,k1),point_two=calc_point(c,d,k2);
double dis1=calc_dis(a,point_one)/p,dis2=calc_dis(point_one,point_two)/r,dis3=calc_dis(point_two,d)/q;
return dis1+dis2+dis3;
}
inline double check_one(double k)
{
double l2=0.0,r2=1.0;
while(r2-l2>1e-)
{
double mid12=l2+(r2-l2)/3.0,mid22=r2-(r2-l2)/3.0;
if(check_two(k,mid12)>check_two(k,mid22)) l2=mid12;
else r2=mid22;
}
return check_two(k,l2);
}
signed main()
{
scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y);
scanf("%lf%lf%lf%lf",&c.x,&c.y,&d.x,&d.y);
scanf("%lf%lf%lf",&p,&q,&r);
double l1=0.0,r1=1.0;
while(r1-l1>1e-)
{
double mid11=l1+(r1-l1)/3.0,mid21=r1-(r1-l1)/3.0;
if(check_one(mid11)>check_one(mid21)) l1=mid11;
else r1=mid21;
}
printf("%.2lf",check_one(l1));
return ;
}

请各位大佬斧正(反正我不认识斧正是什么意思)

最新文章

  1. 如何用Node编写命令行工具
  2. supervisor(一)基础篇
  3. Android数据共享
  4. 【BZOJ-3293&amp;1465&amp;1045】分金币&amp;糖果传递&#215;2 中位数 + 乱搞
  5. iframe 的基本操作
  6. php 遍历一个文件夹下的所有文件和子文件夹
  7. 数据采集工具flume
  8. A*算法的C语言实现
  9. 通过批处理 安装 mongodb和设置身份验证
  10. 利用rsync+inotify实现数据实时同步脚本文件
  11. 微信小程序代码构成
  12. 金蝶k3wise 核算项目、辅助资料
  13. canvas实现验证码
  14. JQuery is()与hasClass()方法的对比
  15. php格式化数字输出number_format
  16. Leetcode 759. Employee Free Time
  17. ios开发中的一些小技巧
  18. 如何让移植的嵌入式ARM显示中文汉字
  19. English trip -- VC(情景课)4 C My feet hurt 我脚痛
  20. [转]生成 Excel.dll

热门文章

  1. day22——从空间角度研究类、类与类之间的关系
  2. 【LeetCode】 #7:反转整数 C语言
  3. Visual Studio 2019 XAML Hot Reload功能介绍
  4. mongodb常规操作语句
  5. 使用Dapper查询记录是否存在
  6. That IP address can&#39;t be assigned to.的问题
  7. 百度地图 libBaiduMapSDK_base_v4_2_1.so&quot; is 32-bit instead of 64-bit错误
  8. 【开发笔记】- 安装Git命令
  9. python day 17: UML(统一建模语言)
  10. css,对包含有子元素的元素进行flex后,会影响原有的布局。如何后续处理