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 of v 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 numbers l, d and w (2 ≤ l ≤ 10000; 1 ≤ d < l; 1 ≤ 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

吐槽:这真是一道有意思的题。。纯高中物理题用代码实现的感觉就是不一样呀

题意:一辆车初速度为0,以恒定的加速度a在长为l的公路上行驶,据起点d处有一测速点,要求车到达此点时速度不得超过w,求走完这条公路的最短时间。

解题思路:跟高中做物理题一样,一点一点分析。
下面是我的分析:
一 v<=w
  1.一直加速到终点
  2.加速到v后匀速到终点
二 v>w
  1.在d段中一直加速也到不了w,那就一直加速
  2.在d段中加速超过w到达v1,然后减速在d点刚好速度为w
  3.在d段中加速超过w到达v,接着匀速一段,然后减速在d点刚好速度为w

  以上三种情况到达d后,再按照一中两个情况分析(l-d)的路程。

附ac代码:
 1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <algorithm>
5 #include <stack>
6 #include <cmath>
7 using namespace std;
8 int main() {
9 ios::sync_with_stdio(false);
10 cin.tie(0);cout.tie(0);
11 double a,v,l,d,w;
12 scanf("%lf%lf%lf %lf%lf",&a,&v,&l,&d,&w);
13 double ans=0,t1=0,t2=0,x1=0,x2=0;
14 double det=0;
15 if(v<=w) {
16 t1=v/a;
17 x1=0.5*a*t1*t1;
18 if(x1>=l) {
19 ans=sqrt(2*l/a);
20 }
21 else {
22 x2=l-x1;
23 t2=x2/v;
24 ans=t1+t2;
25 }
26 }
27 else {
28 t1=sqrt(2*d/a);
29 if(t1*a<=w) {
30 t1=v/a;
31 x1=0.5*a*t1*t1;
32 if(x1>=l) {
33 ans=sqrt(2*l/a);
34 }
35 else {
36 x2=l-x1;
37 t2=x2/v;
38 ans=t1+t2;
39 }
40 }
41 else {
42 det=sqrt(2*w*w+4*a*d);
43 t2=(det-2*w)/(2*a);
44 if(w+a*t2<=v){
45 t1=(w+a*t2)/a;
46 ans=t1+t2;
47 }
48 else {
49 t1=v/a;
50 t2=(v-w)/a;
51 x1=0.5*a*t1*t1+v*t2-0.5*a*t2*t2;
52 x2=d-x1;
53 ans=t1+t2+x2/v;
54 }
55
56 t1=(v-w)/a;
57 x1=w*t1+0.5*a*t1*t1;
58 if(x1>(l-d)) {
59 det=sqrt(w*w+2*a*(l-d));
60 ans+=(det-w)/a;
61 }
62 else {
63 ans+=t1;
64 x2=l-d-x1;
65 ans+=(x2/v);
66 }
67 }
68 }
69 printf("%.12lf\n",ans);
70 return 0;
71 }

codeforces 5D的更多相关文章

  1. Codeforces 5D Follow Traffic Rules

    [题意概述] 某个物体要从A途经B到达C,在通过B的时候速度不能超过vd.  它的加速度为a,最大速度为vm:AB之间距离为d,AC之间距离为L: 问物体最少花多少时间到达C. [题解] 分情况讨论. ...

  2. Codeforces Round #382 (Div. 2) D. Taxes 哥德巴赫猜想

    D. Taxes 题目链接 http://codeforces.com/contest/735/problem/D 题面 Mr. Funt now lives in a country with a ...

  3. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  4. Codeforces 1375F - Integer Game(交互)

    Codeforces 题面传送门 & 洛谷题面传送门 一个奇怪的做法. 首先我们猜测答案总是 First.考虑什么样的情况能够一步把对方一步干掉.方便起见我们假设 \(a<b<c\ ...

  5. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  8. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  9. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

随机推荐

  1. layui表格前端格式化时间戳字段

    layui.use(['util','table'], function(){   var table = layui.table;   var util = layui.util;   //... ...

  2. 前端知识(一)05 axios-谷粒学院

    目录 一.axios的作用 二.axios实例 1.复制js资源 2.创建 axios.html 3.引入js 4.启动课程中心微服务 5.编写js 6.html渲染数据 7.跨域 8.使用生命周期函 ...

  3. CSS实现迷你键盘

    最近做了一个迷你键盘的dome,这里分享给大家 dome下载地址(点击下载) 代码如下: <!DOCTYPE html> <html lang="en" > ...

  4. 使用Python对MySQL数据库插入二十万条数据

    1.当我们测试的时候需要大量的数据的时候,往往需要我们自己造数据,一条一条的加是不现实的,这时候就需要使用脚本来批量生成数据了. import pymysql import random import ...

  5. Redis持久化之父子进程与写时复制

    之所以将Linux底层的写时复制技术放在Redis篇幅下,是因为Redis进行RDB持久化时,BGSAVE(后面称之为"后台保存")会开辟一个子进程,将数据从内存写进磁盘,这儿我产 ...

  6. shell命令分隔符 二叉树结构的命令行树

    shell命令分隔符 二叉树结构的命令行树 I  ;&

  7. WireShark 之 text2pcap

    前言 本来想用 010Editer 的,看到破解教程头都大了,那么就用 WireShark 的 Text2pcap 吧! 正文 打开CMD控制台窗口,转到WireShark安装目录 ,此处可以shif ...

  8. Google performance Tools (gperftools) 使用心得

    Google performance Tools (gperftools) 使用心得 gperftools是google开发的一款非常实用的工具集,主要包括:性能优异的malloc free内存分配器 ...

  9. Linux 安装mysql总结

    第一步:mysql安装包准备 mysql官网下载地址:https://downloads.mysql.com/ 第二步:将mysql安装包上传到服务器 第三步:解压 tar -zxvf mysql-5 ...

  10. 2021最新WordPress安装教程(一):Centos7安装Apache

    一转眼2020年已经过去了,看网络上很多WordPress的安装教程都比较旧,有些写的不太详细,WordPress是站长最喜欢的一款建站系统,数据统计到2020年为止,WordPress在所有网站的市 ...