原题链接:http://codeforces.com/gym/100523/attachments/download/2798/20142015-ct-s02e07-codeforces-trainings-season-2-episode-7-en.pdf

题意

给你一堆三维点,问你他们是否共面

题解

模板题,套版就好,需要注意的是共线

代码

#include<iostream>
#include<cmath>
#include<cstdio>
#define MAX_N 100005
using namespace std; const double eps=1e-; inline double Sqrt(double a) {
return a <= ? : sqrt(a);
} inline double Sqr(double a) {
return a * a;
} class Point_3 {
public:
double x, y, z; Point_3() { } Point_3(double xx, double yy, double zz) : x(xx), y(yy), z(zz) { } Point_3 operator-(Point_3 a) {
return Point_3(x - a.x, y - a.y, z - a.z);
} double Length() const {
return Sqrt(Sqr(x) + Sqr(y) + Sqr(z));
}
}; Point_3 Det(const Point_3 &a,const Point_3 &b) {
return Point_3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
} double Dot(const Point_3 &a,const Point_3 &b) {
return a.x * b.x + a.y * b.y + a.z * b.z;
} double vlen(Point_3 P){return P.Length();} int dot_inline(Point_3 p1,Point_3 p2,Point_3 p3) {
return vlen(Det(p1 - p2, p2 - p3)) < eps;
} bool zero(double x) {
return fabs(x) < eps;
} Point_3 pvec(Point_3 s1,Point_3 s2,Point_3 s3) {
return Det((s1 - s2), (s2 - s3));
} int dots_onplane(Point_3 a,Point_3 b,Point_3 c,Point_3 d) {
return zero(Dot(pvec(a, b, c), d - a));
} int n;
Point_3 point3[MAX_N]; int main() {
scanf("%d", &n);
for (int i = ; i < n; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
point3[i] = Point_3(a, b, c);
}
if (n <= ) {
cout << "TAK" << endl;
return ;
}
int p = -;
for (int i = ; i < n; i++) {
if (dot_inline(point3[], point3[], point3[i]) == ) {
p = i;
break;
}
}
if (p == -) {
cout << "TAK" << endl;
return ;
}
for (int i = ; i < n; i++) {
if (i == p)continue;
if (dots_onplane(point3[], point3[], point3[p], point3[i]) == ) {
cout << "NIE" << endl;
return ;
}
}
cout << "TAK" << endl;
return ;
}

最新文章

  1. SilverlightERP&amp;CRM源码(可用于开发基于Silverlight的CRM,OA,HR,进销存等)
  2. 关于PHP中Session文件过多的问题
  3. ceph入门学习链接
  4. 9张思维导图学习Javascript(转)
  5. 病毒侵袭持续中 - HDU 3065(AC自动机,判断子串个数)
  6. javascript事件详细说明
  7. LINQ to Sql系列二 简单查询和联接查询
  8. php与mysql之间操作原理
  9. Django多级评论
  10. asp.net mvc5 多语言应用
  11. php函数总结2
  12. linux convert mp3 to wav and opus to wav
  13. Spark学习笔记--Spark在Windows下的环境搭建
  14. 《机器学习实战》第3章决策树程序清单3-1 计算给定数据集的香农熵calcShannonEnt()运行过程
  15. 如何在Linux上安装服务器管理软件Cockpit
  16. 【c++】字符串流输出恢复状态问题
  17. echarts柱状图,改变柱状颜色
  18. caffe Python API 之中值转换
  19. Java GlassPane进度条遮罩
  20. mysql把之前表单进行拆分

热门文章

  1. vscode 实时预览 编辑markdown 插件 Markdown Preview Enhanced
  2. 如何在微信中发送&quot;相册&quot;文件时有选择性地显示视频文件
  3. Linux异常体系之stubs_offset
  4. ubuntu 设置Path 开机启动脚本
  5. 使用spyder3调试python程序
  6. AtCoder Petrozavodsk Contest 001
  7. JS进行人民币大小写转换
  8. 一个关于python装饰器参数的问题
  9. 九度oj 题目1397:查找数段
  10. 【Luogu】P3157动态逆序对(树状数组套主席树)