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点共 ...
随机推荐
- Eclipse 打包jar
1.将项目打成jar: 1.1 要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar.经过尝试后,我不推荐用Ant打包,因为 ...
- HDU 6114 Chess
Chess 思路:求C(n,m),除法取余用乘法逆元算. 代码: #include<bits/stdc++.h> using namespace std; #define ll long ...
- m_Orchestrate learning system---三十、项目中的dist文件一般是做什么的
m_Orchestrate learning system---三十.项目中的dist文件一般是做什么的 一.总结 一句话总结: Bootstrap switch:dist 目录是放最终的js和css ...
- OAuth简介(包含简明使用教程)
SSO:用户一次登陆后在多个系统免登录. 博客gem 'doorkeeper' https://i.cnblogs.com/EditPosts.aspx?postid=9255973 OAuth:用 ...
- Spring Boot 启动 Struts 报冲突
错误信息如下: Caused by: com.opensymphony.xwork2.config.ConfigurationException: Bean type class com.opensy ...
- python-day5笔记
一.python基础--基本数据类型 (无论用户输入什么内容,input 都会存成字符串格式) 1.基本数据类型 1)数字类型 整型(整数)int:年级,年纪,等级,身份证号,QQ号,手机号,leve ...
- Mac无法写入移动硬盘,Mac移动硬盘不能写
对于使用 Mac 的朋友,有时候难免需会使用移动硬盘.一般的移动硬盘的容量都比较大,再加上国内大多数人使用的都是 Windows 系统,为了通用与方便,所以硬盘的分区一般都是 NTFS 格式的.对于 ...
- SqlDataReader的用法
datareader对象提供只读单向数据的快速传递,单向:您只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地,DataSet中的数据可以任意读取和修改 01.usi ...
- pos提交提交数据时碰到Django csrf
我的github(PS:希望star):https://github.com/thWinterSun/v-admin 最近在用Vue写前端代码,再用vue-resource向后台提交数据.项目后台是用 ...
- jQuery 插件运行机制和 $冲突解决
1.jQuery.fn.extend(object) 基本插件假设我们要创建一个插件,使一组元素中的文本变为绿色.我们要做的就是添加一个名为greenify的函数, $.fn 将像其他任何jquery ...