5563 Clarke and five-pointed star
这是昨天晚上BC的B题,题目是说给你五个点,让你判断是不是能够成整五角星。换句话说就是让你判断是不是整五边形。
这里有两种思路
从角度出发判断每个角的角度。从边出发判断边的长短。
#include<bits/stdc++.h>using namespace std;#define eps 0.00001struct node{double x,y;};node a[6];double d[20];double pp(double x1,double y1,double x2,double y2){return sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );}int main(){int t;scanf("%d",&t);while(t--){for(int i=0; i<5; i++)scanf("%lf%lf",&a[i].x,&a[i].y);int cnt=0,flag=1;for(int i=0; i<5; i++){for(int j=i+1; j<5; j++){d[cnt++]=pp(a[i].x,a[i].y,a[j].x,a[j].y);}}sort(d,d+cnt);//只需要判断临近的边就行了。for(int i=1; i<5; i++){if(abs(d[i]-d[i-1])>1e-5){flag=0;break;}}if(flag)printf("Yes\n");elseprintf("No\n");}return 0;}