题意:给一个蛋糕,然后三个草莓,要求将蛋糕均分为三份(120度的扇形),不切割草莓并且保证每份蛋糕均有一个草莓,是否可行。

题解:三种情况不可行:1、草莓在蛋糕圆心(被这坑了)。

           2、存在两草莓与圆心三点共线。

           3、三个草莓张角小于120度。

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 const double PI=acos(-1.0),eps=1e-8;
 7 inline bool same(double a,double b)
 8 {
 9     double t=a-b;
10     return fabs(t)<eps||fabs(t-2*PI)<eps;
11 }
12 int main()
13 {
14     int T;
15     for(scanf("%d",&T);T;T--)
16     {
17         double th[3],po[3][2];
18         scanf("%lf",&th[0]);
19         bool flag=false;
20         for(int i=0;i<3;i++)
21         {
22             scanf("%lf%lf",&po[i][0],&po[i][1]);
23             th[i]=atan2(po[i][0],po[i][1]);
24             if(same(po[i][0],po[i][1])&&same(po[i][0],0.0))
25                 flag=true;
26         }
27         if(flag||same(th[0],th[1])||same(th[0],th[2])||same(th[1],th[2]))
28             printf("No\n");
29         else
30         {
31             sort(th,th+3);
32             if(th[2]-th[0]<2.0*PI/3.0+eps||th[1]-th[0]>4.0*PI/3.0-eps)
33                 printf("No\n");
34             else
35                 printf("Yes\n");
36         }
37     }
38     return 0;
39 }