codeforces 5D
1 second
64 megabytes
standard input
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.
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).
Print the answer with at least five digits after the decimal point.
1 1
2 1 3
2.500000000000
5 70
200 170 40
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的更多相关文章
- Codeforces 5D Follow Traffic Rules
[题意概述] 某个物体要从A途经B到达C,在通过B的时候速度不能超过vd. 它的加速度为a,最大速度为vm:AB之间距离为d,AC之间距离为L: 问物体最少花多少时间到达C. [题解] 分情况讨论. ...
- 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 ...
- Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)
题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...
- Codeforces 1375F - Integer Game(交互)
Codeforces 题面传送门 & 洛谷题面传送门 一个奇怪的做法. 首先我们猜测答案总是 First.考虑什么样的情况能够一步把对方一步干掉.方便起见我们假设 \(a<b<c\ ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
随机推荐
- C#高级编程第11版 - 第五章 索引
[1]5.1 泛型概述 1.通过泛型,你可以创建独立于特定类型(contained types)以外的方法和类,而不用为不同类型编写多份同样功能的代码,你只需要创建一个方法或者类. 2.泛型类使用泛型 ...
- Linux文件系统之INode
本文转载自阮一峰博客:理解inode 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存51 ...
- git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学
小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone 应指定版本,它复制的这个版本的全部历史信息: 各个分支 git init 数据库 ...
- HDU1814和平委员会
题目大意: 有n对的人,编号从1-2*n,m对的人之间互相不喜欢,每对人中必徐选1个人加入和平委员会,求字典序最小的解 -------------------------------- 2-SAT问题 ...
- python 百分比的计算打印
在做压测的时候常常需要统计测试成功率,简单的例子如下: count = 89i = 100print("測試次數:%d"%count)print("測試成功率:%.2f% ...
- spark SQL (二) 聚合
聚合内置功能DataFrames提供共同聚合,例如count(),countDistinct(),avg(),max(),min(),等.虽然这些功能是专为DataFrames,spark SQL还拥 ...
- c++指针 c指针 改变值
1. #include <iostream>using namespace std;void move(int *p) ====>void move(*&p){ ...
- 算法-迪杰斯特拉算法(dijkstra)-最短路径
迪杰斯特拉算法(dijkstra)-最短路径 简介: 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中 ...
- 我们到底为什么要用 IoC 和 AOP
作为一名 Java 开发,对 Spring 框架是再熟悉不过的了.Spring 支持的控制反转(Inversion of Control,缩写为IoC)和面向切面编程(Aspect-oriented ...
- 将jekyll博客主页的超链接变为新标签页打开
将jekyll博客主页的超链接变为新标签页打开 最近发现在打开博文查看时往往不想关闭当前页面,想新建一个页面打开,查了HTML资料以后进行修改 在根目录找到index.html,打开编辑,找到图示&l ...