Description
一个凸多边形的公共汽车,速度为v沿着
Input
第一行四个整数n,w,v,u,之后n行每行两个整数
Output
输出在不出车祸的情况下人从(0,0)到达(0,w)点最短用时,结果与精确值的相对误差及绝对误差不超过10−6
Sample Input
5 5 1 2
1 2
3 1
4 3
3 4
1 4
Sample Output
5.0000000000
Solution
有两种情况
1.人直接以最大速度u走过去,用时
2.人先等车经过,这个过程中尽可能跟着车走,然后车经过后人以最大速度走完全程,此时任何一个点都可能成为人等待的那个点,等待(xi,yi)时用时为xiv+w−yiu,取最大值即可
Code
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n;
double w,v,u,x,y;
while(~scanf("%d%lf%lf%lf",&n,&w,&v,&u))
{
double ans=0;
int f1=1,f2=1;
while(n--)
{
scanf("%lf%lf",&x,&y);
if(x/v<y/u)f1=0;
if(x/v>y/u)f2=0;
ans=max(ans,x/v+(w-y)/u);
}
if(f1||f2)printf("%.10f\n",w/u);
else printf("%.10f\n",ans);
}
return 0;
}

探讨行人避开沿轴线行驶的凸多边形车辆,从起点到终点的最短用时问题。输入包括车辆参数及多边形顶点坐标,输出在避免碰撞前提下行人到达目标点的最短时间。
1157

被折叠的 条评论
为什么被折叠?



