• A


    One day Vasya painted a Cartesian coordinate system on a piece of paper and marked some set of points (x1, y1), (x2, y2), ..., (xn, yn). Let's define neighbors for some fixed point from the given set (x, y):

    • point (x', y') is (x, y)'s right neighbor, if x' > x and y' = y
    • point (x', y') is (x, y)'s left neighbor, if x' < x and y' = y
    • point (x', y') is (x, y)'s lower neighbor, if x' = x and y' < y
    • point (x', y') is (x, y)'s upper neighbor, if x' = x and y' > y

    We'll consider point (x, y) from the given set supercentral, if it has at least one upper, at least one lower, at least one left and at least one right neighbor among this set's points.

    Vasya marked quite many points on the paper. Analyzing the picture manually is rather a challenge, so Vasya asked you to help him. Your task is to find the number of supercentral points in the given set.

    Input

    The first input line contains the only integer n (1 ≤ n ≤ 200) — the number of points in the given set. Next n lines contain the coordinates of the points written as "x y" (without the quotes) (|x|, |y| ≤ 1000), all coordinates are integers. The numbers in the line are separated by exactly one space. It is guaranteed that all points are different.

    Output

    Print the only number — the number of supercentral points of the given set.

    题解:

    判断一个点有没有被东西南北四个点包围 O(n^2)

    s

     1 #include<stdio.h>
     2 struct node{
     3     int x;
     4     int y;
     5 }points[205];
     6 int main() {
     7     int n ;
     8     scanf("%d",&n);
     9         for(int i = 0; i < n; i++) {
    10             scanf("%d %d",&points[i].x,&points[i].y);
    11         }
    12         int ans = 0;
    13         for(int i = 0; i < n; i++) {
    14             int a = 0;
    15             int b = 0;
    16             int c = 0;
    17             int d = 0;
    18             for(int  j = 0 ; j < n; j++) {
    19                 if(i == j) continue;
    20                 if(points[j].y == points[i].y && points[i].x < points[j].x) a = 1; //right
    21                 else if(points[j].y == points[i].y && points[i].x > points[j].x) b = 1; //left
    22                 else if(points[j].y > points[i].y && points[i].x == points[j].x) c = 1; //up
    23                 else if(points[j].y < points[i].y && points[i].x == points[j].x) d = 1; //down
    24                 
    25                 if((a + b + c + d )== 4) {
    26                     ans++;
    27                     break;
    28                 }
    29                 
    30             }
    31         }
    32         printf("%d
    ",ans);
    33     
    34     
    35     return 0;
    36 }
  • 相关阅读:
    Win10 字体模糊解决(DPI缩放禁用),设置默认输入法英文
    windows下使用VS2015编译V8 JavaScript引擎(v5.5
    GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断
    wget 显示"英国中部时间",去掉烦人的刷屏显示
    阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
    CSS
    bootstrap4 调整元素之间距离
    数据库文件结构、sqlserver ON [PRIMARY]
    快速查看数据库中每个表的数据条数
    关于LINQ中SELECT NEW 的问题
  • 原文地址:https://www.cnblogs.com/jj81/p/9033503.html
Copyright © 2020-2023  润新知