题意:给定二维平面上的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 }