博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces A. Supercentral Point 题解
阅读量:5282 次
发布时间:2019-06-14

本文共 2293 字,大约阅读时间需要 7 分钟。

版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载。 https://blog.csdn.net/kenden23/article/details/24862581

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.

Sample test(s)
input
81 14 23 11 20 20 11 01 3
output
2

暴力法可过,效率O(n^2)

可是使用hash表能够把效率降到近乎O(n)

要巧妙使用两个map容器。

要对map和set容器非常熟悉了。合起来一起使用。

#include 
#include
#include
#include
#include
#include
#include
using namespace std;void SupercentralPoint(){ int n = 0, x, y; cin>>n; unordered_map
> xumIS; unordered_map
> yumIS; pair
*pii = new pair
[n]; for (int i = 0; i < n; i++) { cin>>x>>y; pii[i].first = x; pii[i].second = y; xumIS[x].insert(y); yumIS[y].insert(x); } int supers = 0; for (int i = 0; i < n; i++) { if ( pii[i].second != *(xumIS[pii[i].first].begin()) && pii[i].second != *(xumIS[pii[i].first].rbegin()) && pii[i].first != *(yumIS[pii[i].second].begin()) && pii[i].first != *(yumIS[pii[i].second].rbegin()) ) supers++; } cout<

转载于:https://www.cnblogs.com/mqxnongmin/p/10558491.html

你可能感兴趣的文章
HttpClient的巨坑
查看>>
关于静态文本框透明度的问题
查看>>
海量数据、高并发的优化方案
查看>>
javascript的发展及个人笔记
查看>>
全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
查看>>
梦断代码读后感01
查看>>
[CF#250 Div.2 D]The Child and Zoo(并查集)
查看>>
博客园博客插入公式
查看>>
hdu 1028 Ignatius and the Princess III(母函数入门+模板)
查看>>
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
(五十四)涂鸦的实现和截图的保存
查看>>
配置EditPlus使其可以编译运行java程序
查看>>
java中的占位符\t\n\r\f
查看>>
7.14
查看>>
SDN2017 第一次作业
查看>>
MySQL通过frm 和 ibd 恢复数据过程
查看>>
SRS源码——Listener
查看>>