POJ 2526

题意:给出n个点,判断是否有中心对称点。

题解:排序,验证

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #include<algorithm>

 4 using namespace std;

 5 struct point

 6 {

 7     int x,y;

 8     bool operator<(const point &ne)const

 9     {

10         if(x!=ne.x)

11             return x<ne.x;

12         else

13             return y<ne.y;

14     }

15     bool operator!=(const point &ne)const

16     {

17         return x!=ne.x||y!=ne.y;

18     }

19     point(){}

20     point(int _x,int _y){x=_x;y=_y;}

21 }po[10005],p;

22 int main()

23 {

24     int T,n;

25     for(scanf("%d",&T);T;T--)

26     {

27         scanf("%d",&n);

28         for(int i=0;i<n;i++)

29             scanf("%d%d",&po[i].x,&po[i].y);

30         sort(po,po+n);

31         p=point(po[0].x+po[n-1].x,po[0].y+po[n-1].y);

32         for(int i=1,j=n-2;i<j;i++,j--)

33         {

34             if(p!=point(po[i].x+po[j].x,po[i].y+po[j].y))

35             {

36                 n=0;

37                 break;

38             }

39         }

40         printf("%s\n",(n==0)?"no":"yes");

41     }

42     return 0;

43 }

你可能感兴趣的:(poj)