zoukankan      html  css  js  c++  java
  • [入门组模拟赛[难]]灯塔

    题目描述

    输入

    输出

    样例输入

    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 <= x,y <= 10^9

    思路:能否找到一个点在边与坐标轴平行的正方形角上或边与坐标轴倾斜四十五度的正方形角上,在输入的时候记录x,y,x+y,x-y的最大值,最小值,然后遍历所有点判断是否在正方形的角上,是的话就令flag=1,退出循环.

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1000001;
    int T,n,x[N],y[N],xmax,xmin,ymax,ymin;
    bool flag;
    void get()
    {
        for(int i=1;i<=n;i++)
            if(i==1) xmax=xmin=x[i],ymax=ymin=y[i];
            else xmin=min(x[i],xmin),ymin=min(y[i],ymin),xmax=max(x[i],xmax),ymax=max(y[i],ymax);
        for(int i=1;i<=n;i++)
            if((x[i]==xmin||x[i]==xmax)&&(y[i]==ymin||y[i]==ymax))
                flag=1;
        return ;
    }
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
            flag=0;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d%d",&x[i],&y[i]);
            get();
            for(int i=1;i<=n;i++)
            {
                int tmp=x[i]-y[i];
                y[i]=x[i]+y[i];
                x[i]=tmp;
            }
            get();
            if(flag==1) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    C# 获取枚举集合的其中两种方式
    UITextField限制字数的方法
    iOS
    iOS
    iOS
    iOS 获取已连接的wifi信息
    AFNetWorking 的简单使用
    CoreData 基本操作方法封装
    在Ios里UIWebView参入js
    AFNetworking教程
  • 原文地址:https://www.cnblogs.com/LJA001162/p/13335713.html
Copyright © 2011-2022 走看看