啥也不说了,直接看图吧……

代码如下:

#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
#define LL long long
struct point
{
LL x,y,z;
};
bool fun(point a,point b,point c,point d)
{
point p1, p2,p3;
p1.x = a.x-d.x;
p1.y = a.y-d.y;
p1.z = a.z-d.z; p2.x = a.x-c.x;
p2.y = a.y-c.y;
p2.z = a.z-c.z; p3.x = b.x-d.x;
p3.y = b.y-d.y;
p3.z = b.z-d.z; point w1,w2; w1.x = p1.y*p2.z-p2.y*p1.z;
w1.y = p1.z*p2.x-p2.z*p1.x;
w1.z = p1.x*p2.y-p2.x*p1.y; w2.x = p1.y*p3.z-p3.y*p1.z;
w2.y = p1.z*p3.x-p3.z*p1.x;
w2.z = p1.x*p3.y-p3.x*p1.y;
if(w1.x*w2.y==w2.x*w1.y && w1.z*w2.y==w2.z*w1.y)
return true;
return false;
}
LL dis(point a,point b)
{
return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z);
}
bool Dis(point a,point b,point c)
{
if(dis(b,c)>=dis(a,b)+dis(a,c))
return true;
return false;
}
bool T(point a,point b,point c,point d)
{
point p1, p2;
p1.x = a.x-b.x;
p1.y=a.y-b.y;
p1.z=a.z-b.z;
p2.x=c.x-d.x;
p2.y=c.y-d.y;
p2.z=c.z-d.z;
if(p1.x*p2.x+p1.y*p2.y+p1.z*p2.z == ){
return true;
}
else return false;
}
int main()
{
// freopen("J.in.cpp","r",stdin);
point a, b, c, d;
scanf("%I64d%I64d%I64d",&a.x,&a.y,&a.z);
scanf("%I64d%I64d%I64d",&b.x,&b.y,&b.z);
scanf("%I64d%I64d%I64d",&c.x,&c.y,&c.z);
scanf("%I64d%I64d%I64d",&d.x,&d.y,&d.z);
if(T(a,b,c,d) && fun(a,b,c,d) && Dis(b,a,d) && Dis(c,a,d))
{
printf("Valid\n");
}
else printf("Invalid\n");
return ;
}

URAL 2099 Space Invader题解 (计算几何)的更多相关文章

  1. 暑假集训#2 div1 J 四点直角 J - Space Invader 四点共面+跨立实验

    题意:给你四个点,判断能否先依次通过A,B两点,然后再在某个地方只进行一次直角转弯再一次经过C,D两点: #include <iostream> #include <cstdio&g ...

  2. Ural 1248 Sequence Sum 题解

    目录 Ural 1248 Sequence Sum 题解 题意 题解 程序 Ural 1248 Sequence Sum 题解 题意 给定\(n\)个用科学计数法表示的实数\((10^{-100}\s ...

  3. Ural 1250 Sea Burial 题解

    目录 Ural 1250 Sea Burial 题解 题意 输入 题解 程序 Ural 1250 Sea Burial 题解 题意 给定一个\(n\times m\)的地图,\(.\)为水,\(\#\ ...

  4. poj 1696:Space Ant(计算几何,凸包变种,极角排序)

    Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2876   Accepted: 1839 Descrip ...

  5. FZU 2099 魔法阵(计算几何)

     Problem 2099 魔法阵 Accept: 120    Submit: 289 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Probl ...

  6. POJ - 2031 Building a Space Station(计算几何+最小生成树)

    http://poj.org/problem?id=2031 题意 给出三维坐标系下的n个球体,求把它们联通的最小代价. 分析 最小生成树加上一点计算几何.建图,若两球体原本有接触,则边权为0:否则边 ...

  7. poj1696 Space Ant【计算几何】

    含极角序排序模板.   Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5334   Accepted:  ...

  8. URAL - 1901 Space Elevators

    题目: Nowadays spaceships are never launched from the Earth's surface. There is a huge spaceport place ...

  9. 『HGOI 20190917』Cruise 题解 (计算几何+DP)

    题目概述 在平面直角坐标系的第$1$象限和第$4$象限有$n$个点,其中第$i$个点的坐标为$(x_i,y_i)$,有一个权值$p_i$ 从原点$O(0,0)$出发,不重复的经过一些点,最终走到原点, ...

随机推荐

  1. java中的Volatile 变量

    Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...

  2. XP 右键扩展设置 1.0 免费绿色版

    软件名称: xp右键扩展设置软件 1.0 免费绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP / Win2008软件大小: 57 ...

  3. web开发路径问题

    1. web开发路径问题总结: http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html 2. JSP/SERVLET 路径问题 ...

  4. SharedPreferences的工具类

    import android.content.Context; import android.content.SharedPreferences; import android.content.Sha ...

  5. Linux Shell : Test命令参数解析

    格式: test conditions test -n string : string 不为空 test -z string : string 为空 test int1 -eq int2  : int ...

  6. Linux下将Mysql和Apache加入到系统服务里的方法

    Apache加入到系统服务里面: cp /安装目录下/apache/bin/apachectl /etc/rc.d/init.d/httpd 修改httpd 在文件头部加入如下内容: ### # Co ...

  7. leetcode24,交换链表相邻的节点

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  8. CSS3秘笈:第一章

    1.<div>和<span>标签: <div>和<span>标签:就像是一个空的容器,我们要往里面填充内容.一个div就是一个块,意味着它的前后都要空一 ...

  9. hdu_5029_relief grain(树链剖分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5029 题意:给你一个树,然后给你两点,将这两点之间的点涂上颜色,问涂色最多的那个颜色是什么,如果数量相 ...

  10. C++primer 9.49

    题目:如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender).如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(descender).编写程序,读入一个单词文件,输出最长 ...