【HDOJ5533】Dancing Stars on Me(计算几何)

题意:给定二维平面上的n个整点,问它们是否都在正n边形的定点上

n<=100,abs(x[i]),abs(y[i])<=1e4

思路:队友做的,抱大腿

可以发现只有n=4时顶点有可能都是整点,判一下对角线与边长就行

我与队友互演,WA了5发……

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long  
 4 const int maxn=1e3+5;
 5 struct node{
 6     int x,y;
 7 }a[maxn];
 8 int dis(int i,int j)
 9 {
10     return (a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y);
11 }
12 int main()
13 {
14     int T;
15     scanf("%d",&T);
16     while(T--)
17     {
18         int n;
19         scanf("%d",&n);
20         for(int i=1;i<=n;i++)
21         {
22             scanf("%d%d",&a[i].x,&a[i].y);
23         }
24         if(n!=4)
25         {
26             printf("NO
");
27         }
28         else
29         {
30             int g=0;
31             int d=0;
32             for(int i=2;i<=4;i++)
33             {
34                 if(dis(1,i)>d)
35                 {
36                     g=i;
37                     d=dis(1,i);
38                 }
39             }
40             if(g!=3)
41                 swap(a[3],a[g]);
42             int f=0;
43             if(dis(1,3)==dis(2,4)&&dis(1,2)==dis(1,4)&&dis(2,3)==dis(3,4)&&dis(1,2)==dis(3,2))
44                 f=1;
45             if(f)
46                 printf("YES
");
47             else
48                 printf("NO
");
49         }
50     }
51     
52 }
原文地址:https://www.cnblogs.com/myx12345/p/9879521.html