原题链接: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. Python中类的声明,使用,属性,实例属性,计算属性及继承,重写

    Python中的类的定义以及使用: 类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 ...

  2. R-data.table

    data.table可以扩展和增强data.frame的功能,在分组操作和组合时访问速度更快. require(data.table) theDT = data.table(A=1:10, B=let ...

  3. IOC容器和Bean的配置

     IOC容器和Bean的配置   1        IOC和DI ①IOC(Inversion of Control):反转控制. 在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取 ...

  4. LeetCode(242)Valid Anagram

    题目 Given two strings s and t, write a function to determine if t is an anagram of s. For example, s ...

  5. Linux 关于SELinux的命令及使用

    1. 模式的设置 : 修改/etc/selinux/config文件中的SELINUX=”" 的值 ,然后重启.enforcing:强制模式,只要selinux不允许,就无法执行 permi ...

  6. HDU - 1465 不容易系列之一(错排)

    HDU有个网名叫做8006的男性同学,结交网友无数,最近该同学玩起了浪漫,同时给n个网友每人写了一封信,这都没什么,要命的是,他竟然把所有的信都装错了信封!注意了,是全部装错哟! 现在的问题是:请大家 ...

  7. 二叉排序树:POJ2418-Hardwood Species(外加字符串处理)

    Hardwood Species Time Limit: 10000MS Memory Limit: 65536K Description Hardwoods are the botanical gr ...

  8. myeclipse中hibernate生成映射文件

    在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了 ...

  9. MySQL基本命令和常用数据库对象

    MySQL基本命令: 连接远程主机的MySQL服务(为了保证安全性,执行下面命令时,可以省略-p后面的密码,执行命令后系统会提示输入密码) mysql -p 密码 -u 用户名 -h 主机地址 --d ...

  10. sql获取指定表所有列名及注释

    SELECT b.name as 字段名 ,Type_name(b.xusertype) as 字段类型, Isnull(c.VALUE,'') as 字段说明FROM sysobjects a jo ...