CF1300D-Aerodynamic 求点集是否中心对称
题意没有太读懂...导致我没写完。
就是按照顺时针给你一些点,问这些点是否中心对称。
就用1和n/2+1,求一个中心点。然后看2和n/2+2,3和n/2+3...所求出的中心点是不是一个同一个就行了。
注意n为奇数一定不行。
1 #include <cstdio> 2 #include <cmath> 3 using namespace std; 4 int n; 5 double x[110000],y[110000],ax,ay; 6 bool equ(double x,double y) 7 { 8 if (fabs(x - y) <= 0.0000000001) 9 return true; 10 return false; 11 } 12 int main() 13 { 14 scanf("%d",&n); 15 if (n & 1) 16 { 17 printf("NO\n"); 18 return 0; 19 } 20 for (int i = 1;i <= n;i++) 21 scanf("%lf%lf",&x[i],&y[i]); 22 ax = (x[1] + x[n / 2 + 1]) / 2.0; 23 ay = (y[1] + y[n / 2 + 1]) / 2.0; 24 for (int i = 2;i <= n / 2;i++) 25 if (!equ(ax,(x[i] + x[n / 2 + i]) / 2.0) || !equ(ay,(y[i] + y[n / 2 + i]) / 2.0)) 26 { 27 printf("NO\n"); 28 return 0; 29 } 30 printf("YES\n"); 31 return 0; 32 }
心之所动 且就随缘去吧