【解题方法】比较显然的是有两种情况,一种是车还在x轴另一边的时候人就已经走过去了,一种是车完全过去了的时候人走到,那么第一种情况直接先判一下,第二种情况二分时间然后同样算一下就可以了。

【AC 代码】

#include <bits/stdc++.h>
using namespace std;
const double eps=1e-9;
const int maxn=10050;
int judge(double x){
    if(x>eps) return 1;
    else if(x<-eps) return -1;
    else return 0;
}
double u,v,w;int n;
struct node{
    double x,y;
}p[maxn];
bool check1(){
    for(int i=0; i<n; i++){
        if(judge(u*p[i].x-v*p[i].y)<0) return 0;
    }
    return 1;
}
bool check2(double t){
    for(int i=0; i<n; i++){
        if(judge(u*p[i].x-v*p[i].y-u*v*t)>0) return 0;
    }
    return 1;
}
int main()
{
    cin>>n>>w>>v>>u;
    for(int i=0; i<n; i++) cin>>p[i].x>>p[i].y;
    //cout<<w<<" "<<u<<endl;
    if(check1()){
        printf("%.10f\n",1.0*w/u);
    }else{
        double l=0,r=2e9;
        for(int i=0; i<100; i++){
            double mid=(l+r)/2;
            if(check2(mid)) r=mid;
            else l=mid;
        }
        //double ans=(l+r)/2.0;
        printf("%.10f\n",1.0*w/u+(l+r)/2);
    }
}