三分显然,要注意EPS必须设成1e-6,设得再小一点都会TLE……坑炸了
#include<cstdio> #include<algorithm> #include<cmath> using namespace std; #define EPS 0.000001 int n,x[60010],v[60010]; double calc(double p) { double res=0; for(int i=1;i<=n;++i) res=max(res,fabs(p-(double)x[i])/(double)v[i]); return res; } int main() { // freopen("b.in","r",stdin); scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&x[i]); for(int i=1;i<=n;++i) scanf("%d",&v[i]); double l=1.0,r=1000000000.0; while(r-l>EPS) { double m1=l+(r-l)/3.0; double m2=r-(r-l)/3.0; double t1=calc(m1),t2=calc(m2); if(t1>t2) l=m1; else r=m2; } printf("%.12lf ",calc(l)); return 0; }