计算几何
基准时间限制: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. C#开发框架学习

    C# 开源框架(整理) Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用J ...

  2. NOJ-1581 筷子 (线性DP)

    题目大意:有n支筷子,已知长度,定义一双筷子的质量等于长度的平方差,问能否分成k双?若能,输出所有筷子的最小质量和. 题目分析:先将筷子按长度从小到大排序,定义状态dp(i,j)表示将前 i 支筷子分 ...

  3. json 的样式与应用 - C#/.NET

    本文采用问答的方式来写 问题一:什么是 json ? json是一种轻量级的数据交换格式,非常适合服务器与JavaScript交互.(它和XML一样,都是用来处理交互数据的) 问题二:json 长什么 ...

  4. iOS UI-表格控制器(UITableView)-基本使用

    tableView的常见属性 cell的常见属性 一.一般情况 #import "ViewController.h" @interface ViewController ()< ...

  5. vue上传文件

    <div> <input type="file" class="file" name="file" @change=&qu ...

  6. Spring Boot 学习(一) 快速搭建SpringBoot 项目

    快速搭建一个 Spring Boot 项目 部分参考于<深入实践Spring Boot>.<Spring实战 第四版>与程序猿DD的有关博客. 参考(嘟嘟独立博客):http: ...

  7. mysql日期时间类型总结

    MySQL 日期类型:日期格式.所占存储空间.日期范围 比较.  日期类型        存储空间       日期格式                 日期范围  ------------ ---- ...

  8. React教程-组件

    在React中创建一个组件非常简单(React组件有2种,一个非状态组件,一个有状态组件) 首先我们来看看ES6里面如何写构造函数 class App{ constructor(){ } event( ...

  9. Flask初级(九)flash与前台交互get详解

    Project name :Flask_Plan templates:templates static:static @app.route('/') def hello_world(): return ...

  10. 浅谈:从为什么学习python到如何学好python

    虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...