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

Posted iat14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
");
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
");
28             return 0; 
29         }
30     printf("YES
");
31     return 0;
32 }

 

以上是关于CF1300D-Aerodynamic 求点集是否中心对称的主要内容,如果未能解决你的问题,请参考以下文章

帮同学参加数学建模做的求点集间最短距离,时间复杂度300*300

CF70D Professor's task(动态凸包)

咕咕咕(凸包)

CF1529D

Codeforces Round #618 (Div.1) (Div.2) (CF1299) (CF1300)

CF1592Ddfs序+二分