原题链接: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 ;
}

Ampzz 2011 Cross Spider 计算几何的更多相关文章

  1. Codeforces Gym 100523K K - Cross Spider 计算几何,判断是否n点共面

    K - Cross SpiderTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/v ...

  2. bzoj 2395: [Balkan 2011]Timeismoney【计算几何+最小生成树】

    妙啊,是一个逼近(?)的做法 把两个值最为平面上的点坐标,然后答案也是一个点. 首先求出可能是答案的点xy分别是按照c和t排序做最小生成树的答案,然后考虑比这两个点的答案小的答案,一定在xy连线靠近原 ...

  3. X Open Cup named after E.V. Pankratiev. European Grand Prix

    A. Arithmetic Rectangle 对于一行或者一列的情况可以递推求出最大值. 对于至少一行或者一列的情况,可以定义四个格子一组横向和纵向的相等关系,然后悬线法求最大子矩阵. 时间复杂度$ ...

  4. arm-linux工具

    arm-linux工具的功能如下: arm-linux-addr2line 把程序地址转换为文件名和行号.在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上 ...

  5. Linux平台Makefile文件的编写基础篇

    目的:        基本掌握了 make 的用法,能在Linux系统上编程. 环境:        Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境. 准备: ...

  6. 退役III次后做题记录(扯淡)

    退役III次后做题记录(扯淡) CF607E Cross Sum 计算几何屎题 直接二分一下,算出每条线的位置然后算 注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px flag:计 ...

  7. bzoj2395 [Balkan 2011]Timeismoney(最小乘积生成树+计算几何)

    题意 每条边有两个权值\(c,t\),请求出一颗生成树,使得\(\sum c\times \sum t\)最小 题解 为什么生成树会和计算几何扯上关系-- 对于每棵树,设\(x=c,y=t\),我们可 ...

  8. ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)

    POJ2318 本题需要运用to left test不断判断点处于哪个分区,并统计分区的点个数(保证点不在边界和界外),用来做叉积入门题很合适 //计算几何-叉积入门题 //Time:157Ms Me ...

  9. ACM 计算几何中的精度问题(转)

    http://www.cnblogs.com/acsmile/archive/2011/05/09/2040918.html 计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模 ...

随机推荐

  1. Install GStreamer on Ubuntu

    apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-p ...

  2. loc与iloc函数的使用

    Pandas中loc和iloc函数用法详解(源码+实例)  https://blog.csdn.net/w_weiying/article/details/81411257 Pandas中loc,il ...

  3. 牛客网 Wannafly挑战赛21 灯塔

    Z市是一座港口城市,来来往往的船只依靠灯塔指引方向.在海平面上,存在n个灯塔.每个灯塔可以照亮以它的中心点为中心的90°范围.特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要 ...

  4. bash 统计在线时长最长的十个玩/统计一天内一直处于不活跃状态的玩家的百分比

    1.某游戏的客户端每隔5分钟会向服务端报告一次玩家的账户积分,如果两次报告的时间间隔不大于5分钟,认为该玩家在这5分钟内在线,假设报告数据的格式如下: IP                   Dat ...

  5. PYday15--面向对象的进阶:集成、成员、方法、异常处理

    1.继承 实例: 2.构造方法: 3.反射:以字符串的形式去模块操作其成员. 成员: 最外层是文件,文件里面包含类,通过类可以创建对象,对象可以封装字段和指针.类里面可以有方法,指针可以指向方法. 通 ...

  6. FFT、NTT学习笔记

    参考资料 picks miskcoo menci 胡小兔 unname 自为风月马前卒 上面是FFT的,学完了就来看NTT吧 原根 例题:luogu3803 fft优化后模板 #include < ...

  7. 记一次运行spark程序遇到的权限问题

    设置回滚点在本地运行时正常,在集群时就报错,后来是发现ceshi这个目录其他用户没有写的权限,修改其他用户的权限就好了 hdfs dfs - /ceshi

  8. 【POJ 2585】Window Pains 拓扑排序

    Description . . . and so on . . . Unfortunately, Boudreaux's computer is very unreliable and crashes ...

  9. TOJ 3581: 最简IPv6表示

    3581: 最简IPv6表示  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 121   ...

  10. linux基础(Vi编辑器)

    整理的linux vi编辑器命令 Vi编辑器,进入方式,输入vi file即可进入编辑模式 1.vi模式(Linux严格区分大小写) Vi所学到的几种模式 模式 主要用途 相应操作 对应命令 普通模式 ...