题目链接:
https://ac.nowcoder.com/acm/contest/17796/B
注意三点:
1.不用开方算边长,因为我们比较的是对应边之间的比例关系,如果两个三角形三边原来的比例关系是相等的,那么都做个平方他们也都是相等的
2.比较大小时化除为乘,这样可以避免出现小数
3.因为多了个平方,并且除化为乘了,数据会比较大,要开LL,函数中的参数也别忘记开LL
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dis(ll x,ll y,ll p,ll q){
return (x-p)*(x-p)+(y-q)*(y-q);
}
int main(){
ll t;
cin>>t;
while(t--){
ll x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6;
ll a=dis(x1,y1,x2,y2),b=dis(x2,y2,x3,y3),c=dis(x3,y3,x1,y1);
if(b>a) swap(a,b);if(c>a) swap(a,c); if(c>b) swap(b,c);
ll d=dis(x4,y4,x5,y5),e=dis(x5,y5,x6,y6),f=dis(x6,y6,x4,y4);
if(e>d) swap(e,d);if(f>d) swap(d,f); if(f>e) swap(e,f);
if(a*e==b*d&&b*f==c*e)
{
cout<<"YES"<<endl;
}
else cout<<"NO"<<endl;
}
return 0;
}