poj 2526 Center of symmetry

对x,y坐标分别排下序就好了

View Code
 1 #include <iostream>
2 #include <algorithm>
3
4 using namespace std;
5
6 struct node{
7 int x,y;
8 }ar[10005];
9 int n;
10
11 int cmp_X(node a,node b)
12 {
13 return a.x>b.x;
14 }
15
16 int cmp_Y(node a,node b)
17 {
18 return a.y>b.y;
19 }
20
21 int solve_X()
22 {
23 int i,j,d,dd;
24 d=(ar[0].x+ar[n-1].x)/2;
25 for (i=1,j=n-2;i<j;i++,j--)
26 {
27 dd=(ar[i].x+ar[j].x)/2;
28 if(d!=dd)return 0;
29 }
30 if(i==j&&ar[i].x!=d)return 0;
31 return 1;
32 }
33
34 int solve_Y()
35 {
36 int i,j,d,dd;
37 d=(ar[0].y+ar[n-1].y)/2;
38 for (i=1,j=n-2;i<j;i++,j--)
39 {
40 dd=(ar[i].y+ar[j].y)/2;
41 if(d!=dd)return 0;
42 }
43 if(i==j&&ar[i].y!=d)return 0;
44 return 1;
45 }
46
47 int main()
48 {
49 int T,i;
50 cin>>T;
51 while (T--)
52 {
53 cin>>n;
54 for (i=0;i<n;i++)
55 cin>>ar[i].x>>ar[i].y;
56 sort(ar,ar+n,cmp_X);
57 if(solve_X())
58 {
59 sort(ar,ar+n,cmp_Y);
60 if(solve_Y())cout<<"yes"<<endl;
61 else cout<<"no"<<endl;
62 }
63 else cout<<"no"<<endl;
64 }
65 return 0;
66 }



posted @ 2011-10-24 22:21  104_gogo  阅读(156)  评论(0编辑  收藏  举报