题目大意:给出N个点,要求你找出一条竖直的对称轴,使得对称轴两遍的点关于该轴对称
解题思路:对称轴就是所有点的横坐标的平均数,再通过set找到对称的那点是否存在即可
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
typedef pair<int,int> Pair;
#define maxn 1010
struct point{
int x, y;
}P[maxn];
int main() {
int test, N;
scanf("%d", &test);
while(test--) {
int sum = 0;
set<Pair> s;
scanf("%d", &N);
for(int i = 0; i < N; i++) {
scanf("%d%d",&P[i].x, &P[i].y);
sum += P[i].x;
s.insert(Pair(P[i].x * N,P[i].y));
}
bool mark = true;
for(int i = 0; i < N; i++) {
int x = 2 * sum - P[i].x * N, y = P[i].y;
if(s.count(Pair(x,y)))
continue;
else {
mark = false;
break;
}
}
if(mark)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}