codeforces 703C

    xiaoxiao2024-11-29  5

    题意:有一辆汽车从马路上穿过(不会让人的,可以看成凸多边形),一个人从马路这头最快要多久可以走到对面。速度不能超过一定值,不能被撞。

    题解:贪心。过马路无非两种情况,(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
    最新回复(0)