CF_5D_FollowTrafficRules

D. Follow Traffic Rules
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output

Everybody knows that the capital of Berland is connected to Bercouver (the Olympic capital) by a direct road. To improve the road's traffic capacity, there was placed just one traffic sign, limiting the maximum speed. Traffic signs in Berland are a bit peculiar, because they limit the speed only at that point on the road where they are placed. Right after passing the sign it is allowed to drive at any speed.

It is known that the car of an average Berland citizen has the acceleration (deceleration) speed of a km/h2, and has maximum speed ofv km/h. The road has the length of l km, and the speed sign, limiting the speed to w km/h, is placed d km (1 ≤ d < l) away from the capital of Berland. The car has a zero speed at the beginning of the journey. Find the minimum time that an average Berland citizen will need to get from the capital to Bercouver, if he drives at the optimal speed.

The car can enter Bercouver at any speed.

Input

The first line of the input file contains two integer numbers a and v (1 ≤ a, v ≤ 10000). The second line contains three integer numbersld and w (2 ≤ l ≤ 100001 ≤ d < l1 ≤ w ≤ 10000).

Output

Print the answer with at least five digits after the decimal point.

Examples
input
1 1
2 1 3
output
2.500000000000
input
5 70
200 170 40
output
8.965874696353


题意给你一个车的最大速度v加速度a(加速或者刹车都是这个加速度)

给你一个路程l其中d处有一个测速点速度不能超过w

问从速度为0开始最快要多久能通过终点


这里特别注意那是一个测速点

之后速度可以比w大


其他的就是分不同情况讨论就可以了,具体讨论见代码

运动学物理题……


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;

int main()
{
    int aa,vv;
    int ll,dd,ww;
    scanf("%d%d%d%d%d",&aa,&vv,&ll,&dd,&ww);
    double a=aa,v=vv,l=ll,d=dd,w=ww;
    double t1=v/a;
    double x1=0.5*a*t1*t1; //加到最大速度的距离
    double t2=w/a;
    double x2=0.5*a*t2*t2; //加到限制速度的距离
    double t3=(v-w)/a;
    double x3=w*t3+0.5*a*t3*t3; //从w加速到最大速度的距离
    if(v<=w)
    {
        if(x1>=l)
            printf("%lf\n",sqrt(l*2.0/a));
        else
            printf("%lf\n",t1+(l-x1)/v);
    }
    else
    {
        if(d<=x2)   //d最小一直加速到匀速即可
        {
            if(x1>=l)
                printf("%lf\n",sqrt(l*2.0/a));
            else
                printf("%lf\n",t1+(l-x1)/v);
        }
        else if(d<=x1+x3)  //先加速后减速到w
        {
            double vm1=sqrt(a*(d-x2)+w*w);
            if(l-d<=x3)
            {
                double vm2=sqrt(2*a*(l-d)+w*w);
                printf("%lf\n",t2+(vm1-w)*2/a+(vm2-w)/a);
            }
            else
                printf("%lf\n",t2+(vm1-w)*2/a+t3+(l-d-x3)/v);
        }
        else        //加速匀速减速到w
        {
            if(l-d<=x3)
            {
                double vm2=sqrt(2*a*(l-d)+w*w);
                printf("%lf\n",t1+t3+(d-x1-x3)/v+(vm2-w)/a);
            }
            else
                printf("%lf\n",t1+t3+(d-x1-x3)/v+t3+(l-d-x3)/v);
        }
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查看位图的信息(右键查看): 1.文件头 2.信息头 3.RGB掩码(如果有的话) 显示出来的形式如下: BITMAPFILEHEADER* = 0x02800048 BITMAPFILEHEADER .bfType = 0x4D42 .bfSize = 552158 .bfReserved1 = 0 .bfReserved2 = 0 .bfOffBits = 66 BITMAPINFOHEADER .biSize = 40 .biWidth = 353 .biHeight = 391 .biPlanes = 1 .biBitCount = 32 .biCompression = BI_BITFIELDS .biSizeImage = 552092 .biXPelsPerMeter = 0 .biYPelsPerMeter = 0 .biClrUsed = 0 .biClrImportant = 0 Red Mask = 00FF0000 Green Mask = 0000FF00 Blue Mask = 000000FF 说明: 1.第一行为内存中malloc出来的地址,由于是虚拟内存,不看也罢 2.该程序不止可以查看BITMAPINFOHEADER类型的位图, 其余三种类型也可查看,分别为: BITMAPCOREHEADER、BITMAPV4HEADER、BITMAPV5HEADER 3.最后三行的RGB Mask是颜色掩码,对于BITMAPINFOHEADER类型来说,不一定有。 4.右键功能是查看信息,左键是左右镜像操作,由于是底层数据直接每行左右互换, 而对于1、4位深的这两种位图,底层数据操作涉及位操作,而我还在写这个位图类, 故暂不支持,只支持8位以上的水平镜像操作。 5.支持剪切板操作,并且是以CF_DIB或CF_DIBV5呼叫GetClipboardData函数的, 复制时,也是以该参数呼叫SetClipboardData函数的。 你可以复制其他地方的图片过来,以查看图片属性。 6.程序中运行中保存在内存中的图片是BITMAPFILEHEADER*指针,不是HBITMAP, 呼叫的显示函数是SetDIBitsToDevice函数。 7.鼠标在图片上移动是,右边填充鼠标点的颜色,标题栏也有相关显示。 下边显示鼠标点附近11*11像素范围的放大图像,正中间用十字叉线画出。 取色是直接在底层取数据解析。 8.改程序在《windows程序设计》上的一个例子改编而来,并且正在完善该位图类中, 以加入更多丰富的底层操作功能。 改试验程序主要供想研究位图结构的人查看用。 9.windows搞出了4种位图种类,真作孽~~ 另,16、24、32位深的位图也可以有颜色表的,该程序已考虑在内。 10.下面四种压缩格式暂不支持: BI_RLE8、BI_RLE4、BI_JPEG、BI_PNG 11.随带的附件中,有几张不同格式的位图,你可以试验打开查看。 有问题联系:hastings1986@163.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值