题意:给一个蛋糕,然后三个草莓,要求将蛋糕均分为三份(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 }