题目:http://acm.hdu.edu.cn/showproblem.php?pid=5563
#include"iostream"
#include"cstdio"
#include"cmath"
using namespace std;
typedef struct {double x,y;}point;
double d(point &p1,point &p2)
{
double ans=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return ans;
}
int main()
{
int t,i,j;
double dis1,dis2,dis[10];
cin>>t;
while(t--)
{
dis1=dis2=0;
point p[6];
for(i=1;i<6;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
int k=0;
for(i=1;i<5;i++)
{
for(j=i+1;j<6;j++)
{
dis[k++]=d(p[i],p[j]);
}
}
int cnt=0;
double max=0,min=0;
dis1=dis[0];
for(k=0;k<9;k++)
{
for(j=k+1;j<10;j++)
{
if((abs(dis[k]-dis[j])>=pow(10,-4))&&(!cnt))
{
cnt++;
max=dis[k]>dis[j]?dis[k]:dis[j];
min=dis[k]<dis[j]?dis[k]:dis[j];
}
if((abs(dis[k]-dis[j])>=pow(10,-4))&&(cnt>=1))
{
double m1,m2;
m2=dis[k]>dis[j]?dis[k]:dis[j];
m1=dis[k]<dis[j]?dis[k]:dis[j];
if(abs(m2-max)>=pow(10,-4))
cnt++;
if(abs(m1-min)>=pow(10,-4))
cnt++;
}
if(cnt>=2)
break;
}
}
if(cnt>2)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}