51nod_1265:四点共面(计算几何)

题目链接

设四点为a_0~3,若共面则 (a1a0*a2a0)·a3a0=0

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;

const double eps=1e-8;

struct point
{
    double x,y,z;
    point operator -(const point& rhs)
    {
        point ret;
        ret.x=x-rhs.x;ret.y=y-rhs.y;ret.z=z-rhs.z;
        return ret;
    }
    point operator ^(const point& rhs)
    {
        point ret;
        ret.x=y*rhs.z-z*rhs.y;
        ret.y=z*rhs.x-x*rhs.z;
        ret.z=x*rhs.y-y*rhs.x;
        return ret;
    }
    double operator *(const point& rhs)
    {
        return x*rhs.x+y*rhs.y+z*rhs.z;
    }
}a[4];

bool ok()
{
    return ((a[1]-a[0])^(a[2]-a[0]))*(a[3]-a[0]);
}

int main()
{
    int T;cin>>T;
    while(T--)
    {
        for(int i=0;i<4;i++)
            cin>>a[i].x>>a[i].y>>a[i].z;
        if(!ok()) puts("Yes");
        else puts("NO");
    }
}
时间: 2024-10-12 08:01:47

51nod_1265:四点共面(计算几何)的相关文章

51Nod 1265 四点共面

1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000

1265 四点共面

1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000

51nod 1265 四点共面(判四点共面)

1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <

判断四点共面

1265 . 四点共面 基准时间限制:1 秒 空间限制:65536 KB 分值: 0 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <

四点共面

1265 四点共面  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 &l

51NOD 1265 四点共面(计算几何)

传送门 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Yes",否则输出"No". Input 第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000). Output 输出共T行,如果共面输出"Yes&

51 nod 1265 四点共面

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 思路 : 通过矩阵 AB=(x2-x1,y2-y1,z2-z1) BC=(x3-x2,y3-y2,z3-z2) AB=(x4-x3,y4-y3,z4-z3) 所以,只要考察矩阵: x2-x1,y2-y1,z2-z1 x3-x2,y3-y2,z3-z2 x4-x3,y4-y3,z4-z3 如果行列式为0,说明4点共面. 如果行列式不为0,说明4点不共面.

[51nod1265]四点共面

解题关键:此题有多种解法 三条直线组成的矩阵delta为0,则共面,否则,不共面 Gauss消元法 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 struct tpoint{ 5 double x,y,z; 6 tpoint operator-(const tpoint &p)const{ 7 tpoint q; 8 q.x=x-p.x; 9 q.y=y-p.y; 10 q.z=z-

三维计算几何模版

网上找了一个三维计算几何模版,完善了一下,使它能使用了... #include <cstdio> #include <cstring> #include <algorithm> using namespace std; /***********基础*************/ const double EPS=0.000001; typedef struct Point_3D { double x, y, z; Point_3D(double xx = 0, doubl