RT
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
我想哭
凭什么!一模一样的代码一个TLE一个AC,改小二分范围和精度才过
凭什么!
我眼睁睁的看着那段代码复制之前复制之后一模一样!
凭什么!
#include#include #include #include #include using namespace std;const int N=1005;const double eps=1e-4,INF=1e9;inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){ if(c=='-')f=-1; c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();} return x*f;}int n;double c[N][N],d[N][N],w[N][N];struct Position{ double x,y,z;}a[N];double mn[N];bool vis[N];bool check(double mid){ //printf("check %lf\n",mid); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) w[i][j]=c[i][j]-d[i][j]*mid; memset(vis,0,sizeof(vis));memset(mn,127,sizeof(mn));mn[1]=0; for(int i=1;i<=n;++i){ int k=0; for(int j=1;j<=n;++j) if(!vis[j]&&mn[j] eps){ double mid=(l+r)/2.0; if(check(mid)) r=mid; else l=mid; } printf("%.3f\n",l);}int main(){ freopen("in","r",stdin); while(scanf("%d",&n)!=EOF&&n){ for(int i=1;i<=n;i++) a[i].x=read(),a[i].y=read(),a[i].z=read(); if(n==1) {puts("0.000");continue;} for(int i=1;i<=n;i++) for(int j=1;j<=n;++j) c[i][j]=abs(a[i].z-a[j].z), d[i][j]=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y)); solve(); }}