习题5-6 对称轴(Symmetry, UVa1595)

来源:互联网 发布:网络歌手比赛 编辑:程序博客网 时间:2024/04/30 01:52
//习题5-6 对称轴(Symmetry, ACM/ICPC Seoul 2004, UVa1595)/*定义 map<pair<int, int>, int> vis插入时赋值为1 vis[pair(x, y)]++;查询一个关键字是否存在:if(!vis[pair<int, int>(x, y)]) ... 如果不存在会新建立一个关键字,返回值为0是否可以等同于if(!vis.count(pair<int, int>(x, y))) ...呢?*/struct A {int x, y;bool operator<(const A &rhs) {return x < rhs.x;}}a[1005];using PII = pair<int, int>;PII p[1005];map<PII, int> vis;int main() {int T, n;//IN(); OUT();scanf("%d", &T);while (T--) {vis.clear();scanf("%d", &n);for (int i = 0; i < n; ++i) {scanf("%d%d", &a[i].x, &a[i].y);p[i] = make_pair(a[i].x, a[i].y);if (!vis.count(p[i])) vis[p[i]]++;}sort(a, a + n);int mid = n / 2, s;if (n % 2) s = 2 * a[mid].x;else s = (a[mid].x + a[mid - 1].x);//printf("s = %d\n", s);int x, y;bool flag = true;for (int i = 0; i < n; i++) {x = s - a[i].x;y = a[i].y;//printf("(%d, %d) -> (%d, %d)\n",a[i].x, a[i].y, x, y);if (!vis.count(PII(x, y))) {flag = false;break;}}if (flag) printf("YES\n");else printf("NO\n");}return 0;}

原创粉丝点击