HDU 5563 Clarke and five-pointed star
5563 Clarke and five-pointed star
这是昨天晚上BC的B题,题目是说给你五个点,让你判断是不是能够成整五角星。换句话说就是让你判断是不是整五边形。
这里有两种思路
- 从角度出发判断每个角的角度。
- 从边出发判断边的长短。
#include<bits/stdc++.h>
using namespace std;
#define eps 0.00001
struct 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");
else
printf("No\n");
}
return 0;
}