URAL 2099 Space Invader题解 (计算几何)
啥也不说了,直接看图吧……

代码如下:
#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题解 (计算几何)的更多相关文章
- 暑假集训#2 div1 J 四点直角 J - Space Invader 四点共面+跨立实验
题意:给你四个点,判断能否先依次通过A,B两点,然后再在某个地方只进行一次直角转弯再一次经过C,D两点: #include <iostream> #include <cstdio&g ...
- Ural 1248 Sequence Sum 题解
目录 Ural 1248 Sequence Sum 题解 题意 题解 程序 Ural 1248 Sequence Sum 题解 题意 给定\(n\)个用科学计数法表示的实数\((10^{-100}\s ...
- Ural 1250 Sea Burial 题解
目录 Ural 1250 Sea Burial 题解 题意 输入 题解 程序 Ural 1250 Sea Burial 题解 题意 给定一个\(n\times m\)的地图,\(.\)为水,\(\#\ ...
- poj 1696:Space Ant(计算几何,凸包变种,极角排序)
Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2876 Accepted: 1839 Descrip ...
- FZU 2099 魔法阵(计算几何)
Problem 2099 魔法阵 Accept: 120 Submit: 289 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- POJ - 2031 Building a Space Station(计算几何+最小生成树)
http://poj.org/problem?id=2031 题意 给出三维坐标系下的n个球体,求把它们联通的最小代价. 分析 最小生成树加上一点计算几何.建图,若两球体原本有接触,则边权为0:否则边 ...
- poj1696 Space Ant【计算几何】
含极角序排序模板. Space Ant Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5334 Accepted: ...
- URAL - 1901 Space Elevators
题目: Nowadays spaceships are never launched from the Earth's surface. There is a huge spaceport place ...
- 『HGOI 20190917』Cruise 题解 (计算几何+DP)
题目概述 在平面直角坐标系的第$1$象限和第$4$象限有$n$个点,其中第$i$个点的坐标为$(x_i,y_i)$,有一个权值$p_i$ 从原点$O(0,0)$出发,不重复的经过一些点,最终走到原点, ...
随机推荐
- IntelliJ IDEA 13.1.4新建java web项目
打开软件
- NOIP2010-普及组复赛-第四题-三国游戏
题目描述 Description 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不 ...
- 【Machine Learning in Action --3】决策树ID3算法
1.简单概念描述 决策树的类型有很多,有CART.ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定 ...
- input[type=number]问题
有时候对于只能输入数字的表单会有想要写成input[type=number]但是其中有一个问题 <input type="text" name="code" ...
- iptables指令参考
1.首先介绍一下指令和相关配置文件 启动指令:service iptables start 重启指令:service iptables restart 关闭指令:service iptables st ...
- Dash:程序员的好帮手
Dash 关于Dash是什么.有哪些功能以及该怎么使用,我想直接引用咖啡 生活 美女蛇,这位小伙伴整理的很详细,我这里只说一下Dash的破解方法. 破解 破解补丁下载:Dash3.x_Cracked ...
- 移动前端不得不了解的HTML5 head 头标签(中下篇)
SEO 优化部分 页面标题<title>标签(head 头部必须) <title>your title</title> 页面关键词 keywor ...
- redis2--redis安装
(1)安装Redis Redis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器 ...
- hdu_4507_吉哥系列故事——恨7不成妻(鬼畜数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:中文,不解释,注意的是求的是合法数字的平方和,即(a+b+c+……)^2 题解:数位DP, ...
- 找最大重复次数的数和重复次数(C++ Pair)
Problem A: 第一集 你好,世界冠军 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 265 Solved: 50[Submit][Statu ...