CF_5D_FollowTrafficRules
来源:互联网 发布:转炉煤气 优化控制 编辑:程序博客网 时间:2024/06/18 08:31
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.
The first line of the input file contains two integer numbers a and v (1 ≤ a, v ≤ 10000). The second line contains three integer numbersl, 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 12 1 3
2.500000000000
5 70200 170 40
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;}
- CF_5D_FollowTrafficRules
- Dynamics CRM2016 Web API之Expand related entities & $ref & $count
- (4.6.8)Android性能调优
- poj--3061--Subsequence(技巧)
- 游戏角色
- EF架构D层中公共方法使用文档说明书-张连海-2014年12月7日
- CF_5D_FollowTrafficRules
- Codeforces 540C Ice Cave (BFS)
- C语言实现文件复制
- 93. Restore IP Addresses
- Accelerated C++:通过示例进行编程实践——习题解答(第1章)
- http请求参数综合浅记
- [leetcode-335]Self Crossing
- Ivan and Powers of Two
- Android实现“打招呼”