H - Mysterious Photos


纯纯的一个相似三角形,有一个坑是,精度问题,用了sqrt就wa,

所以此类问题,能不sqrt尽量就不 sqrt



#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue> 
#include <set>
#include <vector>
using namespace std;

double tm[5][5];
double nm[5][5];

double len1[5];
double len2[5];

int main()
{ 
	
	cin>>tm[1][1]>>tm[1][2];
	cin>>tm[2][1]>>tm[2][2];
	cin>>tm[3][1]>>tm[3][2];
	
	cin>>nm[1][1]>>nm[1][2];
	cin>>nm[2][1]>>nm[2][2];
	cin>>nm[3][1]>>nm[3][2]; 
	 
   len1[1]=( pow((tm[1][1]-tm[2][1]),2)+pow((tm[1][2]-tm[2][2]),2) );  //此处长度本应有sqrt,但由于精度问题,才直接用平方计算
   len1[2]=( pow((tm[2][1]-tm[3][1]),2)+pow((tm[2][2]-tm[3][2]),2) );
   len1[3]=( pow((tm[1][1]-tm[3][1]),2)+pow((tm[1][2]-tm[3][2]),2) );
   len2[1]=( pow((nm[1][1]-nm[2][1]),2)+pow((nm[1][2]-nm[2][2]),2) );
   len2[2]=( pow((nm[2][1]-nm[3][1]),2)+pow((nm[2][2]-nm[3][2]),2) );
   len2[3]=( pow((nm[1][1]-nm[3][1]),2)+pow((nm[1][2]-nm[3][2]),2) );
 
	sort(len1+1,len1+3+1);
	sort(len2+1,len2+3+1);


	 if ((len1[1]*len2[2]==len1[2]*len2[1])&&
		 (len1[3]*len2[2]==len1[2]*len2[3]) )         
		printf("YES\n");
	 else

		 	printf("NO\n");
	
	
	return 0;
	
}


你可能感兴趣的:(H - Mysterious Photos)