zoukankan      html  css  js  c++  java
  • 牛客网 Wannafly挑战赛21 灯塔

    Z市是一座港口城市,来来往往的船只依靠灯塔指引方向。
    在海平面上,存在n个灯塔。每个灯塔可以照亮以它的中心点为中心的90°范围。特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要么与坐标轴成45°。 由于经费限制,Z市的灯塔只能被点亮一座。你需要求出在这种情况下,是否存在一座灯塔能够照亮Z市的所有灯塔。

    输入描述:

    第一行一个整数T,表示数据组数。
    对于每组数据,第一行一个整数n,表示灯塔的数量。
    接下来n行,每行两个整数xi,yi,表示第i座灯塔的坐标点。

    输出描述:

    如果存在一座灯塔能够照亮Z市的所有灯塔则输出Yes,否则输出No(区分大小写)。
    示例1

    输入

    复制
    2
    4
    1 1
    1 2
    2 1
    2 2
    5
    4 7
    0 4
    7 3
    3 0
    3 4

    输出

    复制
    Yes
    No

    备注:

    n≤1000000,T≤10,0≤|xi|,|yi|≤109







    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstdlib>
    #include <cstring>
    using namespace std;
    #define ll long long 
    #define  N 1000009
    #define  gep(i,a,b)  for(int i=a;i<=b;i++)
    #define  mem(a,b)  memset(a,b,sizeof(a))
    int t,n;
    struct Node{
        int x,y;
    }nod[N],p[4];
    bool cmp1(Node a,Node b)
    {
        return a.x<b.x;
    }
    bool cmp2(Node a,Node b){
        return  a.y<b.y;
    }
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            gep(i,0,n-1){
                scanf("%d%d",&nod[i].x,&nod[i].y);
            }
            sort(nod,nod+n,cmp1);
            p[0]=nod[0];p[1]=nod[n-1];
            sort(nod,nod+n,cmp2);
            p[2]=nod[0];p[3]=nod[n-1];
            if(p[0].y==p[2].y||p[0].y==p[3].y||p[1].y==p[2].y||p[1].y==p[3].y){
                printf("Yes
    ");
                continue;
            }
            bool judge[4]={1,1,1,1};
            gep(i,0,n-1){
                if(abs(nod[i].y-p[0].y)>abs(nod[i].x-p[0].x))
                    judge[0]=0;
                if(abs(nod[i].y-p[1].y)>abs(nod[i].x-p[1].x))
                    judge[1]=0;
                if(abs(nod[i].y-p[2].y)<abs(nod[i].x-p[2].x))
                    judge[2]=0;
                if(abs(nod[i].y-p[3].y)<abs(nod[i].x-p[3].x))
                    judge[3]=0;
            }
            if(judge[0]+judge[1]+judge[2]+judge[3])
                printf("Yes
    ");
            else
                printf("No
    ");
        }
    }
  • 相关阅读:
    apscheduler 踩坑
    fastapi 导出excel文件
    python flask 使用日志
    git 头指针游离问题
    C# 连接mysql填坑
    前端项目proxy小问题
    需完善--日志框架
    依赖<dependency>的scope了解
    git 退回到指定tag版本
    git切换远程仓库地址
  • 原文地址:https://www.cnblogs.com/tingtin/p/9458868.html
Copyright © 2011-2022 走看看