zoukankan      html  css  js  c++  java
  • P1378 油滴扩展

    https://www.luogu.org/problem/show?pid=1378
    思路简单的搜索题。
    但是!这题真的是让我挠心啊!
    请看注释的那两行,为什么!!(表示被这样坑了一天)

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm> 
    #include<cmath>
    #define PI 3.1415926
    #define PP(x) (x)*(x)
    using namespace std;
    int n,X0,Y0,X1,Y1;
    struct H{
        int x,y;
        double r;
    }p[10];
    bool f[10];
    double ans=0,s=0,dis[10][10];
    double minx(double a,double b,double c,double d)
    {
        double k;
        k=min(a,b);k=min(k,c);
        k=min(k,d);return k;
    }
    bool check()
    {
        for(int i=1;i<=n;i++)
          if(!f[i]) return 0;
        return 1;
    }
    void dfs()
    {
        if(check()){ans=max(ans,s);return;}
    
        double R=1e20;
        for(int i=1;i<=n;i++)
        if(!f[i])
        {   
            //R=min(R,min((double)abs(p[i].x-X1),(double)abs(p[i].x-X0)));
            //R=min(R,min((double)abs(p[i].y-Y1),(double)abs(p[i].y-Y0)));为什么是错的!!!!! 
            R=minx(abs(p[i].x-X1),abs(p[i].x-X0),abs(p[i].y-Y1),abs(p[i].y-Y0));
    
            for(int j=1;j<=n;j++) if(j!=i&&f[j])
            R=min(R,dis[i][j]-p[j].r); 
            if(R<0) R=0.0;
    
            f[i]=1;p[i].r=R;s+=R*R;
            dfs();
            f[i]=0;p[i].r=0;s-=R*R;
        }
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%d%d%d%d",&X0,&Y0,&X1,&Y1);
    
        for(int i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y),p[i].r=0;
    
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)
        dis[i][j]=sqrt(PP(p[i].x-p[j].x)+PP(p[i].y-p[j].y));
    
        dfs();
    
        double S=(double)abs(X0-X1)*abs(Y0-Y1);
        ans=S-ans*PI;
        printf("%d",(int)(ans+0.5));
        return 0;
    } 
  • 相关阅读:
    个人阅读2
    代码复审
    PairProject 总结
    Pairproject 移山之道 阅读随笔和一些问题
    M1/M2个人总结
    团队项目个人总结
    个人阅读作业2
    代码互审
    《移山之道》读后感
    Individual Project
  • 原文地址:https://www.cnblogs.com/dfsac/p/7587862.html
Copyright © 2011-2022 走看看