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)$出发,不重复的经过一些点,最终走到原点, ...
随机推荐
- epoll详解
转自:http://blog.chinaunix.net/uid-24517549-id-4051156.html 什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改 ...
- Android Binder机制原理(史上最强理解,没有之一)(转)
原文地址: http://blog.csdn.net/universus/article/details/6211589 Binder是Android系统进程间通信(IPC)方式之一.Linux已经拥 ...
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
http://c.biancheng.net/cpp/shell/ 1.打印 2.运算符
- js导入插件注意事项.txt
网上收集的答案如下:==============================================1)确认js真的被引用到2)确认js引用顺序没问题3)确认js代码里的括号等都匹配,不会 ...
- unknow type name 'off64_t'
或者 错误"error: 'off64_t' does not name a type" MinGW的bug,使用-std=c++11, 有可能出现, 修改{MinGW dir} ...
- VBS基础篇 - 循环语句(4) - For Each...Next
VBS基础篇 - 循环语句(4) - For Each...Next For Each...Next 循环与 For...Next 循环类似.For Each...Next 不是将语句运行指定的次 ...
- where条件的lambda转化为sql语句
网上找的源码,但是博主说有bug 让自己调试.这个是我经过多次修改后的代码,可以直接用 public static class LambdaToSqlHelper { #region 基础方法 #re ...
- JavaScript高级程序设计:第六章
第六章 面向对象的程序设计 一.理解对象 1.属性类型: ECMAScript中有两种属性:数据属性和访问器属性. (1)数据属性: 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性 ...
- Boxes in a Line(移动盒子)
You have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to sim ...
- HDU1236:排名
Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后 ...