码迷,mamicode.com
首页 > 其他好文 > 详细

CF1300D-Aerodynamic 求点集是否中心对称

时间:2020-02-10 12:08:04      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:i++   col   false   can   nbsp   lse   amp   int   abs   

题意没有太读懂...导致我没写完。

就是按照顺时针给你一些点,问这些点是否中心对称。

就用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 }

 

CF1300D-Aerodynamic 求点集是否中心对称

标签:i++   col   false   can   nbsp   lse   amp   int   abs   

原文地址:https://www.cnblogs.com/iat14/p/12289984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!