zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    lua协程一则报错解决“attempt to yield across metamethod/C-call boundary”
    web server && web framework角色区分
    throttle在程序中的作用
    如何将SVN patch的修改做成old&new文件
    lua 环境揭秘
    lua module package.seeall选项
    lua module环境探秘
    lua OOP实现对象的链式调用
    项目管理(一)任务分配
    项目管理(三)展望
  • 原文地址:https://www.cnblogs.com/jj81/p/9033503.html
Copyright © 2011-2022 走看看