dkfjldfpsd2

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

#include<bits/stdc++.h>
#define ld long double
#define eps 1e-12
#define inf 1e12
#define M2 50
#define M3 200
#define N 200005
using namespace std;
int n;
ld x[N],y[N];
bool pd(ld vx){
    ld t=(x[n]-x[1])/vx;
    ld vy=(y[n]-y[1]+5*t*t)/t;
    for (int i=2;i<n;i++){
        ld t=(x[i]-x[1])/vx;
        if (y[i]>(y[1]-5*t*t+vy*t)) return 0;
    }
    return 1;
}
ld calc(ld vx){
    ld t=(x[n]-x[1])/vx;
    ld vy=(y[n]-y[1]+5*t*t)/t;
    return vx*vx+vy*vy;
}
int main(){
    scanf("%d",&n);
    for (int i=1;i<=n;i++){
        scanf("%Lf%Lf",&x[i],&y[i]);
    }
    ld l=0,r=inf;
    for (int t=0;t<M2;t++){
        ld mid=(l+r)/2;
        if (pd(mid)) l=mid; else r=mid;
    }
    printf("%.20Lf\n",l);
    printf("%.20Lf\n",sqrt(calc(l+1e-3)));
    r=inf; l=0;
    for (int t=0;t<M3;t++){
        ld mid1=l+(r-l)/3;
        ld mid2=r-(r-l)/3;
        if (calc(mid1)>calc(mid2)) l=mid1; else r=mid2;
    }
    printf("%.20Lf\n",sqrt(calc(l)));
}

#include

#define ld long double

#define eps 1e-12

#define inf 1e12

#define M2 50

#define M3 200

#define N 200005

using namespace std;

int n;

ld x[N],y[N];

bool pd(ld vx){

ld t=(x[n]-x[1])/vx;

ld vy=(y[n]-y[1]+5*t*t)/t;

for (int i=2;i

ld t=(x[i]-x[1])/vx;

if (y[i]>(y[1]-5*t*t+vy*t)) return 0;

}

return 1;

}

ld calc(ld vx){

ld t=(x[n]-x[1])/vx;

ld vy=(y[n]-y[1]+5*t*t)/t;

return vx*vx+vy*vy;

}

int main(){

scanf("%d",&n);

for (int i=1;i<=n;i++){

scanf("%Lf%Lf",&x[i],&y[i]);

}

ld l=0,r=inf;

for (int t=0;t

ld mid=(l+r)/2;

if (pd(mid)) l=mid; else r=mid;

}

printf("%.20Lf\n",l);

printf("%.20Lf\n",sqrt(calc(l+1e-3)));

r=inf; l=0;

for (int t=0;t

ld mid1=l+(r-l)/3;

ld mid2=r-(r-l)/3;

if (calc(mid1)>calc(mid2)) l=mid1; else r=mid2;

}

printf("%.20Lf\n",sqrt(calc(l)));

}

附加文件