题解 CF165A 【Supercentral Point】

TRZ_2007

2020-06-07 10:38:48

Solution

题解 [CF165A 【Supercentral Point】](https://www.luogu.com.cn/problem/CF165A) # Solution 其实这道题目非常的简单,由于 $n \le 100$ ,我们可以考虑**枚举**。 但是怎么确定一个点的**正**上,下,左,右的方向呢? 我们来看看这个图: ![](https://cdn.luogu.com.cn/upload/image_hosting/na16nayk.png) 通过观察可以知道: - 1:如果一个点 $(x_1,y_1)$ 在另一个点 $(x,y)$ 的**正上方**,那么可得:$x_1 > x$,$y_1 = y$。 - 2:如果一个点 $(x_1,y_1)$ 在另一个点 $(x,y)$ 的**正下方**,那么可得:$x_1 < x$,$y_1 = y$。 - 3:如果一个点 $(x_1,y_1)$ 在另一个点 $(x,y)$ 的**正左方**,那么可得:$x_1 = x$,$y_1 < y$。 - 4:如果一个点 $(x_1,y_1)$ 在另一个点 $(x,y)$ 的**正右方**,那么可得:$x_1 = x$,$y_1 > y$。 根据我们以上的推论,我们就可以敲代码了。 # Code ```cpp #include <bits/stdc++.h> using namespace std; const int N = 209; int n,a,b,c,d,ans; int x[N],y[N]; int main() { scanf("%d",&n); for(int i = 1;i <= n;i++) { scanf("%d %d",&x[i],&y[i]); } for(int i = 1;i <= n;i++) { a = b = c = d = 0; for(int j = 1;j <= n;j++) { if(x[i] < x[j] && y[i] == y[j]) { a = 1; } if(x[i] > x[j] && y[i] == y[j]) { b = 1; } if(x[i] == x[j] && y[i] > y[j]) { c = 1; } if(x[i] == x[j] && y[i] < y[j]) { d = 1; } } if(a && b && d && c) ans++; } printf("%d\n",ans); return 0; } ```