简单计算一下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:;
    }
}