51Nod:1265 四点共面
第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。
输出共T行,如果共面输出"Yes",否则输出"No"。
1
1 2 0
2 3 0
4 0 0
0 0 0
Yes

将四个点换成三个向量,然后判断三阶行列式(谁知道是什么鬼)是否为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 四点共面的更多相关文章
- 51Nod 1265 四点共面(计算几何)
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面). ...
- 51nod 1265 四点共面【计算几何+线性代数】
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...
- 51nod 1265 四点共面——计算几何
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...
- 51nod1265 四点共面
题目链接:51nod 1265 四点共面 四个点构成的三个向量a,b,c共面的充要条件是存在不全为零的实数x,y,z满足x*a+y*b+z*c=0,然后想到线代了.. 其实就是三个向量的混合积为0:( ...
- 51Nod-1265 四点共面
51Nod 1265 : http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1265 1265 四点共面 基准时间限制:1 秒 ...
- 51nod1265四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如 ...
- (四点共面) 51nod1265 四点共面
1265 四点共面 1 秒 131,072 KB 0 分 基础题 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面).如果共面,输出"Ye ...
- 51nod--1265 四点共面 (计算几何基础, 点积, 叉积)
题目: 1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4 ...
- 51nod1265判断四点共面
1265 四点共面 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共 ...
随机推荐
- Flutter学习笔记(二)
*.assets 当引用图片的时候,需要在pubspec.yaml的文件中的flutter下添加assets,类似于下面的样子: image.png 这里需要注意的是文件里的assets只要一个缩进即 ...
- 【Golang】解决Go test执行单个测试文件提示未定义问题
背景 很多人记录过怎么执行Go test单个文件或者单个函数,但是要么对执行单文件用例存在函数或变量引用的场景避而不谈,要么提示调用了其它文件中的模块会报错.其实了解了go test命令的机制之后,这 ...
- ThreadLocal实现原理
一.ThreadLocal介绍 这是一个线程的局部变量.也就是说,只有当前线程可以访问.既然是只有当前线程可以访问的数据,自然是线程安全的. 为每一个线程分配不同的对象,需要在应用 ...
- Ciel the Commander CodeForces - 321C (树, 思维)
链接 大意: 给定n结点树, 求构造一种染色方案, 使得每个点颜色在[A,Z], 且端点同色的链中至少存在一点颜色大于端点 (A为最大颜色) 直接点分治即可, 因为最坏可以涂$2^{26}-1$个节点 ...
- FasfDFS intall nginx with image filter
centOS7 x64 1. install gd-devel 2. ./configure --prefix=/usr/local/nginx --with-http_image_filter_mo ...
- 常用Java字符API
- WinForm下的TabControl控件
一.TabControl控件介绍 TabControl实现的具体效果: 在实际工作中,我是这么用TabControl控件,实现切换页面效果.比如要实现某个界面进行操作,然后还要查看一下日志,就可以使用 ...
- 遍历HashMap的方法(四)
Map map = new HashMap(); for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { Map.Entr ...
- CAS-认证流程
从结构上看cas包括两个部分,CAS server 和CAS client 需要独立部署,主要负责用户的认证工作,CAS负责处理对客户端受保护资源的访问请求,需要登录时,重新定向到CAS Server ...
- OPENSHIFT MYSQL使用Navicat远程连接
1.安装OpenShift的一个叫RHC的远程管理客户端:https://developers.openshift.com/en/getting-started-windows.html 注意ruby ...
