题意:有一辆汽车从马路上穿过(不会让人的,可以看成凸多边形),一个人从马路这头最快要多久可以走到对面。速度不能超过一定值,不能被撞。
 
题解:贪心。过马路无非两种情况,(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