Ampzz 2011 Cross Spider 计算几何
原题链接: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 计算几何的更多相关文章
- 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 ...
- bzoj 2395: [Balkan 2011]Timeismoney【计算几何+最小生成树】
妙啊,是一个逼近(?)的做法 把两个值最为平面上的点坐标,然后答案也是一个点. 首先求出可能是答案的点xy分别是按照c和t排序做最小生成树的答案,然后考虑比这两个点的答案小的答案,一定在xy连线靠近原 ...
- X Open Cup named after E.V. Pankratiev. European Grand Prix
A. Arithmetic Rectangle 对于一行或者一列的情况可以递推求出最大值. 对于至少一行或者一列的情况,可以定义四个格子一组横向和纵向的相等关系,然后悬线法求最大子矩阵. 时间复杂度$ ...
- arm-linux工具
arm-linux工具的功能如下: arm-linux-addr2line 把程序地址转换为文件名和行号.在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上 ...
- Linux平台Makefile文件的编写基础篇
目的: 基本掌握了 make 的用法,能在Linux系统上编程. 环境: Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境. 准备: ...
- 退役III次后做题记录(扯淡)
退役III次后做题记录(扯淡) CF607E Cross Sum 计算几何屎题 直接二分一下,算出每条线的位置然后算 注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px flag:计 ...
- bzoj2395 [Balkan 2011]Timeismoney(最小乘积生成树+计算几何)
题意 每条边有两个权值\(c,t\),请求出一颗生成树,使得\(\sum c\times \sum t\)最小 题解 为什么生成树会和计算几何扯上关系-- 对于每棵树,设\(x=c,y=t\),我们可 ...
- ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)
POJ2318 本题需要运用to left test不断判断点处于哪个分区,并统计分区的点个数(保证点不在边界和界外),用来做叉积入门题很合适 //计算几何-叉积入门题 //Time:157Ms Me ...
- ACM 计算几何中的精度问题(转)
http://www.cnblogs.com/acsmile/archive/2011/05/09/2040918.html 计算几何头疼的地方一般在于代码量大和精度问题,代码量问题只要平时注意积累模 ...
随机推荐
- python面试题之什么是lambda函数?
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用l ...
- shell-code-拷贝文件
#!/bin/bash while read F do cp ${F}"_pe_1.fastq.gz" /public/home/chenjy/usr/ZD/data/cleand ...
- python3与python2的编码问题
在讲这个问题之前,我们先说说unicode的工作原理.unicode包含了跟全球所有国家编码的映射关系,就是不管你用哪个国家的编码,unicode都能找到它在unicode中的编码.那么无论你用什么编 ...
- stm32L0系列学习(二)HAL-LL库等比较
- Python中re(正则表达式)模块使用方法
Python中常用的正则表达式处理函数: re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import re text = "JGood ...
- day03_12 缩进介绍
python比较变态,必须缩进,而C可以不缩进,世界上只有python这门语言要求必须缩进 tab键是缩进,shift+tab往左移动 SyntaxError:invalid syntax 语法错误 ...
- 如何用字体在网页中画icon
一.用css雪碧图 1.简介 CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用CSS的“background- ...
- python随机数的产生
导入 random模块 >>> import random 1. random.random random.random()用于生成一个0到1的随机浮点数: 0 <= n ...
- POJ 1953 World Cup Noise
World Cup Noise Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14397 Accepted: 7129 ...
- BZOJ2298 [HAOI2011]problem a 【dp】
题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个 ...