题目描述

在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间

输入输出格式

输入格式:

输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By

第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy

第三行是3个整数,分别是P,Q,R

输出格式:

输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位

输入输出样例

输入样例#1:

0 0 0 100

100 0 100 100

2 2 1

输出样例#1:

136.60

说明

对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000,1<=P,Q,R<=10

三分肯定是三分的,不过这道题目是三分套三分。

重点就是要找到两个点,从a到x,从x到y,再从y到d。

我们可以先确定一个点,然后三分枚举另一个点,把当前算出的答案作为三分的返回值,然后进行计算。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const double eps=1e-8;
double ax,ay,bx,by,cx,cy,dx,dy,v1,v2,v3;
double dis(double a1,double b1,double a2,double b2) {
double cha1=a2-a1,cha2=b2-b1;
return sqrt(cha1*cha1+cha2*cha2);
}
double tot(double a1,double b1,double a2,double b2) {
return dis(a1,b1,a2,b2)/v3+dis(a2,b2,dx,dy)/v2;
}
double san1(double x,double y) {//确定上面的端点以后的二分
double lx=cx,ly=cy,rx=dx,ry=dy;
while(dis(lx,ly,rx,ry)>eps) {
double nowx=(rx-lx)/3,nowy=(ry-ly)/3;
double lmidx=lx+nowx,rmidx=rx-nowx,lmidy=ly+nowy,rmidy=ry-nowy;
double ans1=tot(x,y,lmidx,lmidy),ans2=tot(x,y,rmidx,rmidy);
if(ans2-ans1>eps) rx=rmidx,ry=rmidy;
else lx=lmidx,ly=lmidy;
}
return tot(x,y,lx,ly);
}
double san2() {
double lx=ax,ly=ay,rx=bx,ry=by;
while(dis(lx,ly,rx,ry)>eps) {
double nowx=(rx-lx)/3,nowy=(ry-ly)/3;
double lmidx=lx+nowx,rmidx=rx-nowx,lmidy=ly+nowy,rmidy=ry-nowy;
double ans1=san1(lmidx,lmidy)+dis(ax,ay,lmidx,lmidy)/v1,ans2=san1(rmidx,rmidy)+dis(ax,ay,rmidx,rmidy)/v1;
if(ans2-ans1>eps) rx=rmidx,ry=rmidy;
else lx=lmidx,ly=lmidy;
}
return san1(lx,ly)+dis(ax,ay,lx,ly)/v1;
}
signed main() {
cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>v1>>v2>>v3;
printf("%.2lf",san2());
return 0;
}

最新文章

  1. Tlist删除技巧
  2. AS开发者转LAYA一周心得
  3. TortoiseSVN and TortoiseGit 版本控制图标不见了
  4. Integer.valueOf(String) 方法之惑
  5. 如何生成excel文件作为图像识别结果
  6. 使用OC开发phonegp 组件
  7. Linux下关闭node应用
  8. 【通信框架】Apache的开源通信框架thrift概述
  9. JDBC数据库编程常用接口(转)
  10. 面试(4)-spring-Spring面试题和答案
  11. 最短路算法模板SPFA、disjkstra、Floyd
  12. Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据
  13. springmvc中只接受固定提交内容类型的请求
  14. uabntu18.04 安装mysql5.7
  15. Hibernate 单向一对多映射
  16. 【leetcode】476. Number Complement
  17. 19/03/17Python笔记
  18. Java学习笔记35(异常)
  19. Ubuntu 14.10 下安装伪分布式hbase 0.99.0
  20. Spring访问数据库(方式上跟HQL类似,每行记录映射一个实体类)

热门文章

  1. Oracle GoldenGate 同步数据至Hbase
  2. 笔记:Map(就是用来Ctrl+C,V的)
  3. [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)
  4. java 操作实例
  5. 射频IC设计的六边形法则
  6. IAR_STM32_CCM内存使用
  7. Mysql系列(六)—— MySQL索引介绍
  8. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)
  9. Nginx配置单项SSL以及双向SSL
  10. python基础--数据结构之字典