zoukankan      html  css  js  c++  java
  • <JZOJ5904>刺客信条

    然鹅考场上打错某变量名导致30都没有

    调了很久因为

    没转换double

    死亡

    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #define rint register int
    using std::max;
    int x,y,n,fa[2010],s,e;
    double ans,l,r,dis[2010][2010],mid;
    struct node
    {
        int x,y;
    } a[2010];
    int find(int x)
    {
        return x==fa[x]?x:fa[x]=find(fa[x]);
    }
    bool check(double L)
    {
        for(int i=0;i<=n+1;i++) fa[i]=i;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(i==j) continue;
                if(dis[i][j]<2*L)
                    fa[find(j)]=find(i);
            }
        }
        for(rint i=1;i<=n;++i)
        {
            if(a[i].y-L<0||a[i].x+L>x)     fa[find(s)]=find(i);
            if(a[i].x-L<0||a[i].y+L>y)     fa[find(e)]=find(i);
        }
        return find(s)!=find(e);
    }
    
    int main()
    {
        freopen("AC.in","r",stdin);
        freopen("AC.out","w",stdout);
        scanf("%d%d%d",&x,&y,&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i].x,&a[i].y);
    
        for(rint i=1;i<=n;++i)
            for(rint j=1;j<=n;++j)
                dis[i][j]=dis[j][i]=sqrt((double)(a[i].x-a[j].x)*(double)(a[i].x-a[j].x)+(double)(a[i].y-a[j].y)*(double)(a[i].y-a[j].y));        
                
        s=0;e=n+1;
        l=0,r=sqrt((double)x*x+(double)y*y);
        while(r-l>=0.000001)
        {
            double mid=(l+r)/2;
            if(check(mid))
            {
                ans=mid;
                l=mid;
            }
            else r=mid;
        }
        printf("%.2lf",ans);
        return 0;
    }
  • 相关阅读:
    8.5 exit函数进程控制
    8.2 进程标识
    8.6 wait和waitpid函数进程控制
    2.jpg
    8.3 fork函数进程控制
    8.4 vfork函数进程控制
    8.9 竞态条件
    8.8 wait3和wait4函数进程控制
    8.7 waitid函数进程控制
    Silverlight Tools 3.0中文正式版发布(附下载地址)
  • 原文地址:https://www.cnblogs.com/pile8852/p/9794768.html
Copyright © 2011-2022 走看看