简单计算一下k,一道水题,只是没有数学理论基础就十分难受本人开始20分钟就是如此
#include<bits/stdc++.h>
using namespace std;
int t;
double k[5][5];
struct node{
int x,y;
}a[5];
bool cmp(node p,node q){
if (p.x>q.x) return false;
if (p.x==q.x&&p.y>q.y) return false;
return true;
}
int main(){
scanf("%d",&t);
while(t--){
for(int i=1;i<=4;i++)scanf("%d %d",&a[i].x,&a[i].y);
sort(a+1,a+5,cmp);
for(int i=1;i<=4;i++){
for(int j=i+1;j<=4;j++){
if(a[i].x==a[j].x&&a[i].y==a[j].y){
printf("NO\n");
goto hyf;
}
if(a[i].x==a[j].x)k[i][j]=2147483647;
else k[i][j]=(a[i].y-a[j].y)*1.0/(a[i].x-a[j].x);
}
}
if(fabs(k[1][2]-k[3][4])<=1e-15&&fabs(k[1][3]-k[2][4])<=1e-15&&k[1][2]!=k[1][3])printf("YES\n");
else printf("NO\n");
hyf:;
}
} 
京公网安备 11010502036488号