zoukankan      html  css  js  c++  java
  • 奶酪(洛谷P3958)

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    double x[1001],y[1001],z[1001];
    bool book[1001];
    int n,h,r;
    bool flag;
    double dist(double x1,double y1,double z1,double x2,double y2,double z2){
        return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));//求空间内两点距离公式
    }
    void dfs(int ball)
    {
        if(flag) return;
        if(z[ball]+r>=h){//找到顶部出口
            printf("Yes
    ");
            flag=1;
            return;
        }
        book[ball]=1;
        for(int i=1;i<=n;i++){
            if(flag) return;//避免重复去走,会TLE
            if(dist(x[ball],y[ball],z[ball],x[i],y[i],z[i])<=r<<1&&!book[i]) dfs(i);//两洞中心距离小于2倍半径,则两洞相通
        }
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        for(int i=1;i<=t;i++){
            scanf("%d%d%d",&n,&h,&r);
            flag=0;
            memset(book,0,sizeof(book));//初始化
            for(int i=1;i<=n;i++){
                scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
                if(z[i]<=r) book[i]=1;//判断底部入口
            }
            for(int i=1;i<=n;i++){
                if(flag) break;
                else if(book[i]) dfs(i);
            }
            if(!flag) printf("No
    ");//如果没找到出口,则输出No
        }
        return 0;
    }
    

      NOIP2017提高组第二天第一题。其实就是简单的DFS,因为只要判断Yes和No,写好一点就可以了。总用时88ms。

  • 相关阅读:
    Zabbix Server 和 Zabbix Agentd 开机自动运行
    nginx+keepalive实现高可用负载均衡
    zabbix添加对web页面url的状态监控
    Zabbix当内存剩余不足10%的时候触发报警
    zabbix cpu监控介绍
    bash小结
    数据库知识入门
    MySQL简单管理
    python环境
    paramiko实现putty功能
  • 原文地址:https://www.cnblogs.com/dong-ji-yuan/p/9495025.html
Copyright © 2011-2022 走看看