📜  门| GATE-CS-2017(套装2)|第 46 题(1)

📅  最后修改于: 2023-12-03 14:58:32.161000             🧑  作者: Mango

这是一道常见的编程问题,即判断一个点是否在矩形(或圆形等形状)的内部或外部。本题将考察这方面的知识。

题目描述

给出矩形的左下角和右上角两个点坐标,以及作为询问的点的坐标,问该点是否在矩形的内部。

输入格式

输入共有 $n+1$ 行。

第一行包含一个整数 $n$,表示询问的次数。

接下来 $n$ 行,每行包含四个整数 $x_1$,$y_1$,$x_2$,$y_2$($|x_1|,|y_1|,|x_2|,|y_2| \leq 10^9$),表示矩形的左下角和右上角两个点的坐标。

最后 $1$ 行,包含 $x,y$($|x|,|y| \leq 10^9$),表示询问的点的坐标。

输出格式

共 $n$ 行,每行一个字符串,表示作为询问的点是否在矩形内部。

如果在矩形内部,则输出字符串 "YES",否则输出字符串 "NO"。

输入样例

3 0 0 4 4 1 1 2 2 1 1 3 3 3 2 5 5 0 4

输出样例

YES NO YES

分析

判断一个点是否在矩形内,最简单的方法当然是直接套用公式,判断点的坐标是否在矩形的坐标范围内。这里以左下角为原点,右上角为 $(x, y)$,那么点 $(a, b)$ 是否在矩形内,当且仅当 $a \in [0, x]$,$b \in [0, y]$。

C++代码实现如下:

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    while(n--)
    {
        int x1, y1, x2, y2, x, y;
        cin >> x1 >> y1 >> x2 >> y2 >> x >> y;
        if(x >= x1 && x <= x2 && y >= y1 && y <= y2)
            cout << "YES\n";
        else
            cout << "NO\n";
    }
    return 0;
}

Python 代码实现如下:

n = int(input())
for _ in range(n):
    x1, y1, x2, y2, x, y = map(int, input().split())
    if x1 <= x <= x2 and y1 <= y <= y2:
        print("YES")
    else:
        print("NO")

时间复杂度:$O(n)$。