n 个点
开始的位置 速度可以左边 也可以右边
三分距离算时间
换个写法
#include<stdio.h> #include<algorithm> #include<cstring> #include<string> #include<cmath> using namespace std; #define MAXN 60010 #define inf 1000000000.0 double ind[MAXN],v[MAXN]; int n; double f(double a) { double t1=0; for(int i=1;i<=n;i++) { double d=fabs(a-ind[i]); double t=d/v[i]; t1=max(t1,t); } return t1; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lf",&ind[i]); for(int i=1;i<=n;i++) scanf("%lf",&v[i]); double l,r; l=-inf; r=inf; for(int i=1;i<=500;i++) { double ll=l+(r-l)/3; double rr=l+2*(r-l)/3; //printf("%lf %lf",l,r); if(f(rr)-f(ll)>1e-7) r=rr; else l=ll; } printf("%.12lf\n",f(l)); return 0; }
时间: 2024-10-22 01:28:57