题意:有一辆汽车从马路上穿过(不会让人的,可以看成凸多边形),一个人从马路这头最快要多久可以走到对面。速度不能超过一定值,不能被撞。
题解:贪心。过马路无非两种情况,(1)在凸多边形的每个点到达马路上之前通过这个点(全部可以的话就急速通过)。每个点走过之后再急速穿过。
#include<bits/stdc++.h>
using namespace std;
typedef pair<double,double> pdd;
#define X first
#define Y second
const double eps = 1e-8;
int main(){
ios_base::sync_with_stdio(false);
int n;
double w,v,u;
while(cin>>n>>w>>v>>u){
vector<pdd> d(n);
for(int i=0;i<n;i++){
cin>>d[i].X>>d[i].Y;
}
bool ok = true;
for(int i=0;i<n;i++){
if(d[i].Y/u-eps>d[i].X/v){
ok = false;
break;
}
}
if(ok){
cout<<setprecision(6)<<fixed<<w/u<<endl;
continue;
}
double ret = w/u;
for(int i=0;i<n;i++){
ret = max(d[i].X/v+(w-d[i].Y)/u,ret);
}
cout<<setprecision(6)<<fixed<<ret<<endl;
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1294095.html