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

代码如下:

#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. MFC HTTP

    CInternetSession m_winet(NULL,,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,); CHttpConnection *pConnection; ...

  2. stl 生产全排列 next_permutation

    #include<stdio.h>#include<algorithm>using namespace std;int main(){ int n,p[10]; scanf(& ...

  3. Ansible 的委托 并发和任务超时

    异步和轮询 Ansible 有时候要执行等待时间很长的操作,  这个操作可能要持续很长时间, 设置超过ssh的timeout. 这时候你可以在step中指定async 和 poll 来实现异步操作 a ...

  4. UGUI学习笔记

    基本情况:熟悉NGUI  没接触过UGUI 目标:熟练掌握UGUI,并用在实际项目中 一 在网上寻找视频教程,快速了解UGUI http://www.taikr.com/course/89 不错的视频 ...

  5. Computed Observable的参数

    构造计算监控(Constructing a computed observable) 1. ko.computed( evaluator [, targetObject, options] ) eva ...

  6. table可更改th大小的jQuery插件

    (function ($) { $.fn.resizetable = function () { var tableObj = $(this); var inResizeRange = false; ...

  7. HTTPS科普扫盲帖【转】

    为什么需要https HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  8. mybatis----增删改查

    转: select使用 : xml代码: <!-- 查询学生,根据id --> <select id="getStudent" parameterType=&qu ...

  9. webdriver入门

    webdriver是web自动化测试中的重要工具,通过webdriver可以灵活的操纵browser完成相关的测试,目前的webdriver对主流的浏览器均有支持, 如firefox ,chrome, ...

  10. vmware 命令行启动虚拟机

    在redhat enterprise 5.3安装了vmware workstation,如何用vmware 命令行启动指定虚拟机?/usr/bin/vmware[root@node0 ~]# /usr ...