zoukankan      html  css  js  c++  java
  • NOIP 2017 D2T1 奶酪

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    
    
    typedef struct node {
        double x,y,z;
    } qiu;
    
    qiu a[1005];
    
    bool cmp(qiu aa,qiu bb) {
        return aa.z < bb.z ;
    }
    
    double dis(qiu p1,qiu p2) {
        return sqrt(pow((p1.x -p2.x ),2)+pow((p1.y -p2.y ),2)+pow((p1.z -p2.z ),2));
    }
    
    bool flag;
    long long n;
    double h,r;
    bool b[1005];
    long long link[1005][1005];
    bool fail[1005];
    //void dfs(long long id) {
    //  if(flag) return;
    //  long long i;
    //  for(i=1; i<=n; i++) {
    //      if(i==id) continue;
    //      if(!b[i]&&link[id][i]<=2*r) {
    //          b[i]=1;
    //          if(a[i].z + r >=h){
    //              return;
    //          }else{
    //              dfs(i);
    //          }
    //
    //          b[i]=0;
    //      }
    //  }
    //}
    
    void dfs(long long id,long long sum) {
        if(flag) return;
        if(sum + r >= h) {
            flag=1;
            return;
        }
        register int i;
        for(i=1; i<=n; i++) {
            if(i==id) continue;
            if(!b[i]&&link[id][i]<=2*r&&!fail[i]) {
                b[i]=1;
                dfs(i,a[i].z);
                b[i]=0;
                fail[i]=1;
            }
        }
    }
    
    int main() {
        long long t;
    //  freopen("test.in","r",stdin);
    //  freopen("cheese.out","w",stdout);
        scanf("%lld",&t);
        while(t--) {
            memset(b,0,sizeof(b));
            memset(fail,0,sizeof(fail));
            bool succ=0;
    
            scanf("%lld%lf%lf",&n,&h,&r);
            for(long long i=1; i<=n; i++) {
                scanf("%lf%lf%lf",&a[i].x ,&a[i].y ,&a[i].z );
            }
            sort(a+1,a+1+n,cmp);
            for(register int i=1; i<=n; i++) {
                for(long long j=1; j<=n; j++) {
                    link[i][j]=dis(a[i],a[j]);
                    link[j][i]=dis(a[i],a[j]);
                }
            }
    //      for(long long i=1;i<=n;i++){
    //          cout<<a[i].x <<" "<<a[i].y <<" "<<a[i].z <<endl;
    //      }
            for(register int i=1; i<=n; i++) {
                if(abs(a[i].z )-r>0) break;
                else {
    //              cout<<i<<endl;
                    flag=0;
                    dfs(i,a[i].z);
                    if(flag) {
                        cout<<"Yes"<<endl;
                        succ=1;
                        break;
                    }
                }
    
            }
            if(!succ) cout<<"No"<<endl;
    //      if(abs(a[1].z) - r >0) {
    //          cout<<"No"<<endl;
    //          continue;
    //      } else {
    //          flag=0;
    //          dfs(1);
    //          if(flag==1){
    //              cout<<"Yes"<<endl;
    //              continue;
    //          }
    //      }
    
        }
        return 0;
    }
    
    

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247549.html

  • 相关阅读:
    windows定时关机命令
    centos 共享文件目录
    Linux 虚拟机的安全加固建议
    使用mondorescue将本机linux centos 7服务器制作成光盘
    CentOS 7 救援模式启用网卡及重新获取IP地址
    CentOS 7修复MBR和GRUB
    使用windows性能计数器监控cpu使用率
    CodeForces-916A-jamie and Alarm Snooze(笨比题目)
    CodeForces-721D-Maxim and Array(优先队列,贪心,分类讨论)
    CodeForces-721C-Journey(DAG, DP)
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247549.html
Copyright © 2011-2022 走看看