题目

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

分析

易得,答案就是首先在AB上走一段,然后走到CD上的一点,再走到D。

正解就是三分套三分,但本人很懒,打了个枚举加三分,勉强卡了过去。

首先在AB上枚举一点,接着在CD上按时间三分。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const double maxlongint=2147483647.0;
const int mo=1000000007;
const int N=50005;
using namespace std;
double ax,ay,bx,by,cx,cy,dx,dy,sp1,sp2,sp3,ans=maxlongint;
double dis1,dis2,dis3;
double gg(double x,double y,double x1,double y1)
{
return sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
}
double solve(double z1,double z2,double z3)
{
return z1*z3/z2;
}
int main()
{
scanf("%lf %lf %lf %lf\n%lf %lf %lf %lf\n%lf %lf %lf",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy,&sp1,&sp2,&sp3);
dis1=gg(ax,ay,bx,by);
dis2=gg(cx,cy,dx,dy);
for(double i=0;i<=dis1;i+=0.01)
{
double x,y;
double p=solve(i,dis1,abs(bx-ax));
if(bx<ax)
x=ax-p;
else
x=ax+p;
p=solve(i,dis1,abs(by-ay));
if(by<ay)
y=ay-p;
else
y=ay+p;
double l=0,r=dis2;
while(l+0.001<=r)
{
double mid1=l+(r-l)/3,mid2=r-(r-l)/3;
double x1,y1,x2,y2;
p=solve(mid1,dis2,abs(dx-cx));
if(dx<cx)
x1=cx-p;
else
x1=cx+p;
p=solve(mid1,dis2,abs(dy-cy));
if(dy<cy)
y1=cy-p;
else
y1=cy+p;
double rx,ry;
p=solve(mid2,dis2,abs(dx-cx));
if(dx<cx)
x2=cx-p;
else
x2=cx+p;
p=solve(mid2,dis2,abs(dy-cy));
if(dy<cy)
y2=cy-p;
else
y2=cy+p;
if(gg(x,y,x1,y1)/sp3+gg(x1,y1,dx,dy)/sp2<gg(x,y,x2,y2)/sp3+gg(x2,y2,dx,dy)/sp2)
r=mid2;
else l=mid1;
}
double x1,y1;
if(cx>dx)
x1=cx-l/dis2*(cx-dx);
else
x1=cx+l/dis2*(dx-cx);
if(cy>dy)
y1=cy-l/dis2*(cy-dy);
else
y1=cy+l/dis2*(dy-cy);
ans=min(i/sp1+gg(x,y,x1,y1)/sp3+gg(x1,y1,dx,dy)/sp2,ans);
}
printf("%.2lf",ans);
}

【NOIP2016提高A组模拟8.14】传送带的更多相关文章

  1. 【NOIP2016提高A组模拟9.14】数列编辑器

    题目 分析 比赛上,没有注意到询问只询问光标前面,于是只打了个暴力. 因为询问只询问光标前面,首先,当光标向后每移动到一个位置,顺便将这个位置的前缀和,和最大前缀和求出来. 总之,模拟 #includ ...

  2. 【NOIP2016提高A组模拟8.14】总结

    第一题是几何题,没去想直接弃疗.... 第二题觉得很像背包,但是单挑人的顺序不同,答案也会不同,我比较了每个人先后的优劣性,成功搞定了这道题.但是再输出时不小心搞错了,爆零. 第三题,我答案了整整一个 ...

  3. 【NOIP2016提高A组模拟8.14】疯狂的火神

    题目 火神为了检验zone的力量,他决定单挑n个人. 由于火神训练时间有限,最多只有t分钟,所以他可以选择一部分人来单挑,由于有丽子的帮助,他得到了每个人特定的价值,每个人的价值由一个三元组(a,b, ...

  4. JZOJ 4732. 【NOIP2016提高A组模拟8.23】函数

    4732. [NOIP2016提高A组模拟8.23]函数 (Standard IO) Time Limits: 1500 ms  Memory Limits: 262144 KB  Detailed ...

  5. JZOJ 【NOIP2017提高A组模拟9.14】捕老鼠

    JZOJ [NOIP2017提高A组模拟9.14]捕老鼠 题目 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕 ...

  6. [JZOJ]100047. 【NOIP2017提高A组模拟7.14】基因变异

    21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的变异息息相关,考察基因变 ...

  7. [JZOJ100047] 【NOIP2017提高A组模拟7.14】基因变异

    Description 21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的 ...

  8. 【NOIP2016提高A组模拟9.24】总结

    第一题纯模拟,结果那个出题人脑子似乎进水了,空间限制开了1G!!! 导致我捉摸了半天为什么空间要开那么大,最后只能得出上面的结论. 第二题是个矩阵快速幂,比赛上我没把递推式求出来,但是根据各种乱搞,得 ...

  9. 【JZOJ4746】【NOIP2016提高A组模拟9.3】树塔狂想曲

    题目描述 相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和.走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1).如下图是一个数塔,映射到该数塔上行 ...

随机推荐

  1. 那些年我们经历的BT面试题

    初入职场面试的我到处碰壁,以下是我个人对几道面试题的小总结: 1.一列数字的规则如下:1,1,2,3,5,8,13,21, 34........ 求第30位数字是多少,用递规和非递归两种方法算法实现. ...

  2. 初学单片机:Proteus介绍、Proteus与Keil联调(Windows10环境下)

    Proteus是一个仿真软件,可以在里面设计电路并模拟测试,也可生成PCB的布线等等,反正就是强大的不行.初学单片机,除了开发板,这个仿真器就是一个很好的调式环境.软件安装信息: Proteus 8. ...

  3. jenkins中通过Publish Over SSH将项目部署到远程机器上

    Publish Over SSH插件使用在使用Publish Over SSH之前,需要制作SSH私钥.机器间做免密登录配置.假设机器A,ip为192.168.AA.AAA,机器B: 192.168. ...

  4. Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图

    三维绘图函数 三维绘制工具 函数view 实例:三维螺旋线 >> t=:pi/:*pi; plot3(sin(t),cos(t),t) grid %添加网格  plot3可以画出空间中的曲 ...

  5. 剑指offer--day12

    1.1 题目:复杂链表的复制:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回 ...

  6. 深入理解java:1.3.1 JVM内存区域的划分(运行时数据区)

    学习Java GC机制,可以帮助我们在日常工作中 排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序. 我们将从4个方面学习Java GC机制, 1,内存是如何分配的: 2, ...

  7. Mailx安装与使用

    1.卸载sendmail与postfix yum -y install mailx 2.安装mailx yum -y remove sendmail postfix 3.配置mail.rc vim / ...

  8. Oracle 修改数据文件路径的方法

      1. 关闭数据库,然后启动至mount状态 sqlplus / as sysdba shutdown immediate startup mount 2. 修改物理文件: 我这边将: c:\cwd ...

  9. (三)认识twisted reactor

    一.reactor是单线程模型,简单粗暴,也就是说网络IO和我们的业务逻辑一般是在一个线程里,其中网络IO通过event loop的方式去异步执行,效率也很高.看下官网的这幅图,比较清晰 twiste ...

  10. win10远程桌面报出现身份验证错误,要求的函数不受支持

    win10远程桌面报出现身份验证错误,要求的函数不受支持 编写人:左丘文 2019-6-6 公司换了一台新笔记本电脑,是win10操作系统,刚想远程连接一下服务器,发现以前很正常的功能,发现不行了.网 ...