题意
给出n个点的横纵坐标,是否可以找出一条竖线,使左右点都对称。
分析
这个想复杂了。。。
什么坐标离散化了。。
还有一直下意识的关心 点不能用重了。。。
各种标记之类的。。。
其实可以直接 用set遍历 找这一点,存在不存在关于轴对称的另一个点。。
代码
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
int main()
{
//freopen("in.txt","r",stdin);
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
set<P> s;
int sum = 0;
for(int i = 0; i < n; i++)
{
int x, y;
cin >> x >> y;
sum += x;
s.insert(P(x*n,y));
}
int f = 0;
for(set<P>::iterator it = s.begin(); it != s.end(); it++)
{
P m = *it;
if(s.find(P(sum*2.0-m.first,m.second)) == s.end())
{
f = 1;
break;
}
}
cout << (f ? "NO" : "YES") << endl;
}
return 0;
}