计算几何
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
给出三维空间上的四个点(点与点的位置均不相同),判断这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",否则输出"No"。
Input示例
1
1 2 0
2 3 0
4 0 0
0 0 0
Output示例
Yes
李陶冶 (题目提供者)
C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里

将四个点换成三个向量,然后判断三阶行列式(谁知道是什么鬼)是否为0,为0表示三个向量共面。

粘一个百度上搜到的计算方法:

标准方法是在已给行列式的右边添加已给行列式的第一列、第二列。我们把行列式的左上角到右下角的对角线称为主对角线,把右上角到左下角的对角线称为次对角线。这时,三阶行列式的值等于主对角线的三个数的积与和主对角线平行的三个对角线上的数的积的和减去次对角线的三个数的积与和次对角线平行的对角线上三个数的积的和的差。

例如

a1   a2   a3

b1   b2   b3

c1   c2   c3

结果为 a1*b2*c3+b1*c2*a3+c1*a2*b3-a3*b2*c1-b3*c2*a1-c3*a2*b1(注意对角线就容易记住了)

这里一共是六项相加减,整理下可以这么记:

a1*(b2*c3-b3*c2) + a2*(b3*c1-b1*c3) + a3*(b1*c2-b2*c1)

此时可以记住为:

a1*a1的代数余子式+a2*a2的代数余子式+a3*+a3的代数余子式

某个数的代数余子式是指删去那个数所在的行和列后剩下的行列式。

行列式的每一项要求:不同行不同列的数字相乘

如选了a1则与其相乘的数只能在2,3行2,3列中找,(即在 b2 b3 中找)

c2 c3

而a1(b2·c3-b3·c2)-a2(b1·c3-b3·c1)+a3(b1·c2-b2·c1)是用了行列式展开运算:即行列式等于它每行的每一个数乘以它的代数余子式之和   某个数的代数余子式是指删去那个数所在的行和列后剩下的行列式。

#include<bits/stdc++.h>
using namespace std;
struct wzy{
double x,y,z;
}p[5];
int main()
{
int t;
double x1,y1,z1;
double x2,y2,z2;
double x3,y3,z3;
cin>>t;
while(t--)
{
for(int i=0;i<4;i++) cin>>p[i].x>>p[i].y>>p[i].z;
x1=p[1].x-p[0].x;y1=p[1].y-p[0].y;z1=p[1].z-p[0].z;
x2=p[1].x-p[2].x;y2=p[1].y-p[2].y;z2=p[1].z-p[2].z;
x3=p[1].x-p[3].x;y3=p[1].y-p[3].y;z3=p[1].z-p[3].z;
if(x1*y2*z3+y1*z2*x3+z1*x2*y3-z1*y2*x3-x1*y3*z2-y1*x2*z3==0) cout<<"Yes"<<endl;//三阶行列式为零,共面
else cout<<"No"<<endl;
}
return 0;
}

51Nod:1265 四点共面的更多相关文章

  1. 51Nod 1265 四点共面(计算几何)

    1265 四点共面  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面). ...

  2. 51nod 1265 四点共面【计算几何+线性代数】

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...

  3. 51nod 1265 四点共面——计算几何

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...

  4. 51nod1265 四点共面

    题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:( ...

  5. 51Nod-1265 四点共面

    51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 1265 四点共面 基准时间限制:1 秒 ...

  6. 51nod1265四点共面

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如 ...

  7. (四点共面) 51nod1265 四点共面

    1265 四点共面 1 秒 131,072 KB 0 分 基础题   给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...

  8. 51nod--1265 四点共面 (计算几何基础, 点积, 叉积)

    题目: 1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4 ...

  9. 51nod1265判断四点共面

    1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...

随机推荐

  1. m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么

    m_Orchestrate learning system---三十四.使用重定义了$的插件的时候最容易出现的问题是什么 一.总结 一句话总结:如下面这段代码,定义了$的值,还是会习惯性的把$当成jQ ...

  2. [.NET开发] C#实现剪切板功能

    C#剪切板 Clipboard类 我们现在先来看一下官方文档的介绍 位于:System.Windows.Forms 命名空间下 Provides methods to place data on an ...

  3. nyoj-489-dinic/建图

    哭泣天使 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 Doctor Who乘着Tardis带着Amy来到了一个星球,一开Tadis大门,发现这个星球上有个壮观的石 ...

  4. OAF 交互式列车 上一步 下一步的简单使用

    在实际的需求中,我们往往会遇到在下一步的时候验证某些参数,而上一步不需要验证. 这个是非常粗暴的解决方式 if( "goto".equals(pageContext.getPara ...

  5. dubbo管理控制台搭建

    1. 从网上下载dubbo管理控制台:dubbo-admin-2.5.4.war 2. 下载tomcat7,解压缩 3. 将tomcat7 webapps/ROOT的文件全部删除,然后把dubbo-a ...

  6. xrat CC特征

    ["6", 11818669.0, 8326.0, 599.75, 19705.992496873696, 13.882451021258857, 0.07203338938265 ...

  7. SQL Server 调优系列基础篇 - 常用运算符总结

    前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...

  8. ios下 animation-play-state不起作用

    这个问题在 做H5音频播放的时候 困扰了好久,PC端一切正常,单单 移动端 出现各种杂乱的问题,也是醉了. 后来经过大量的检索,发现了一种方案很不错: 请看案例   原  创 完全兼容,各个设备,很不 ...

  9. hdu2665

    题解: 裸的主席树,记录最小值 代码: #include<cstdio> #include<cmath> #include<algorithm> #include& ...

  10. java基本类型的大小

    1个字节是8位byte 1字节short 2字节int 4字节long 8字节float 4字节double 8字节char 2字节boolean 1字节======================= ...