P1355 神秘大三角

题目提供者yeszy

标签 福建省历届夏令营

难度 普及/提高-

题目描述

判断一个点与已知三角形的位置关系。

输入输出格式

输入格式:

前三行:每行一个坐标,表示该三角形的三个顶点

第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系

(详见样例)

所有坐标值均为整数。

输出格式:

若点在三角形内(不含边界),输出1;

若点在三角形外(不含边界),输出2;

若点在三角形边界上(不含顶点),输出3;

若点在三角形顶点上,输出4。

输入输出样例

输入样例#1:

(0,0)

(3,0)

(0,3)

(1,1)

输出样例#1:

1

说明

【数据规模与约定】

对于100%数据,0<=所有点的横、纵坐标<=100

/*
计算几何第一题留念flag.
判断三角形的位置.
用点积和叉积.
所谓点积就是我们平常说得数量积,结果是一个数量.
A·B=|A||B|cos<A,B>=x1*x2+y1*y2.
而叉积的结果是一个向量,是垂直于向量a,b所形成的平面
A×B=|A||B|sin<A,B>=x1*y2-x2*y1.
在顶点上的直接判就可以了.
在边上的话有PA×PB=0&&PA·PB<0充要条件.
在内部我们可以得到互不相同的两个叉积(P点为始点)和的模
等于三角形任意两边叉积的模.
否则就在外边咯.
*/
#include<iostream>
#include<cstdio>
#define MAXN 1001
using namespace std;
int x1,y1,x2,y2,x3,y3,x,y;
bool flag;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
int fabs(int x)
{
return x<0?-x:x;
}
void slove()
{
if(x1==x&&y1==y) flag=true,printf("4");
else if(x2==x&&y2==y) flag=true,printf("4");
else if(x3==x&&y3==y) flag=true,printf("4");
}
void slove2()
{
int a,b;
a=(x1-x)*(y2-y)-(y1-y)*(x2-x);
b=(x1-x)*(x2-x)+(y1-y)*(y2-y);
if(!a&&b<0) flag=true,printf("3");
a=(x1-x)*(y3-y)-(x3-x)*(y1-y);
b=(x1-x)*(x3-x)+(y1-y)*(y3-y);
if(!a&&b<0) flag=true,printf("3");
a=(x3-x)*(y2-y)-(y3-y)*(x2-x);
b=(x3-x)*(x2-x)+(y3-y)*(y2-y);
if(!a&&b<0) flag=true,printf("3");
}
void slove3()
{
int a,b,c,A;
a=fabs((x1-x)*(y2-y)-(y1-y)*(x2-x));//PA*PB.
b=fabs((x1-x)*(y3-y)-(y1-y)*(x3-x));//PA*PC.
c=fabs((x3-x)*(y2-y)-(y3-y)*(x2-x));//PB*PC.
A=fabs((x1-x2)*(y1-y3)-(y1-y2)*(x1-x3));//AB*AC.
if(a+b+c==A) flag=true,printf("1");
}
int main()
{
x1=read(),y1=read(),x2=read(),y2=read(),x3=read(),y3=read();
x=read(),y=read();
slove();
if(!flag) slove2();
if(!flag) slove3();
if(!flag) printf("2");
return 0;
}

洛谷 P1355 神秘大三角(计算几何基础)的更多相关文章

  1. 洛谷 - P1355 - 神秘大三角 - 简单计算几何

    https://www.luogu.org/problemnew/show/P1355 判断一个点和三角形的位置关系,最简单的思路就是用向量. 首先排除掉和三角形顶点重合的情况. 把三角形设计成一个首 ...

  2. 叉积_判断点与三角形的位置关系 P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  3. P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  4. 洛谷 P1230 智力大冲浪

    洛谷 P1230 智力大冲浪 题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?! ...

  5. 洛谷P3348 [ZJOI2016]大森林(LCT,虚点,树上差分)

    洛谷题目传送门 思路分析 最简单粗暴的想法,肯定是大力LCT,每个树都来一遍link之类的操作啦(T飞就不说了) 考虑如何优化算法.如果没有1操作,肯定每个树都长一样.有了1操作,就来仔细分析一下对不 ...

  6. 洛谷——P2640 神秘磁石

    P2640 神秘磁石 题目背景 在遥远的阿拉德大陆,有一种神秘的磁石,是由魔皇制作出来的, 题目描述 1.若给他一个一维坐标系,那么他的磁力一定要在素数坐标的位置上才能发挥的最大(不管位置坐标的大小, ...

  7. 洛谷P2867 [USACO06NOV]大广场Big Square

    P2867 [USACO06NOV]大广场Big Square 题目描述 Farmer John's cows have entered into a competition with Farmer ...

  8. 洛谷 P2867 [USACO06NOV]大广场Big Square

    P2867 [USACO06NOV]大广场Big Square 题目描述 Farmer John's cows have entered into a competition with Farmer ...

  9. 洛谷 P2640 神秘磁石

    P2640 神秘磁石 题目背景 在遥远的阿拉德大陆,有一种神秘的磁石,是由魔皇制作出来的, 题目描述 1.若给他一个一维坐标系,那么他的磁力一定要在素数坐标的位置上才能发挥的最大(不管位置坐标的大小, ...

随机推荐

  1. NIT校赛-- 雷顿女士与平衡树

    题意:https://ac.nowcoder.com/acm/contest/2995/E 给你一棵树,节点有权值,让你求所有路径max-min的和. 思路: 我们计算每个点的贡献,对于一个点,当它为 ...

  2. S02_CH14_ EMIO_OLED 实验

    S02_CH14_ EMIO_OLED 实验 本章将使用EMIO模拟OLED的时序来驱动OLED,本方案对米联系列Miz702,Miz702N和Miz701N全兼容. 14.1板载OLED硬件原理 M ...

  3. 如何设置输入IP地址就直接访问到某一个网站

    如何设置输入IP地址就直接访问到某一个网站 1).在IIS中添加好站点后,在网站绑定中设置明确的IP地址,如下图: 2).修改Default WebSite的端口,或者是把Default WebSit ...

  4. 排序之快排(JS)

    快速排序(Quicksort)是对冒泡排序的一种改进. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分 ...

  5. 怎样理解Cookie

    一. 什么是Cookie Cookie是服务器保存在浏览器里的一小段文本信息, 大小一般不超过4KB, 浏览器每次向服务器发起HTTP请求时就会自动附带上这段信息. 二. Cookie 的主要作用 1 ...

  6. MQTT协议探究(二)

    1 回顾与本次目标 1.1 回顾 MQTT控制报文的基本格式 WireShark进行抓包分析了报文 报文分析: CONNECT--连接服务器 CONNACK--确认连接请求 PINGREQ--心跳请求 ...

  7. IOC之MEF学习

    MEF原理上很简单,找出有共同接口的导入.导出.然后找到把导出的实例化,赋给导入.说到底MEF就是找到合适的类实例化,把它交给导入.Export 特性可修饰类.字段.属性或方法,而 Import 特性 ...

  8. [NOIP10.6模拟赛]2.equation题解--DFS序+线段树

    题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...

  9. 05 Redis-Sentinel

    一.什么是Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案当用redis作master-slave的高可用时,如果master本身宕机,redis本身或 ...

  10. navigateTo防止多次跳转

    “wx.navigateTo” 页面跳转.在有网络延迟时多次点击会产生 多次二级页面 再使用wx.navigateBack就会多次返回到之前那页面 解决办法: 点击之前标个状态true 点击之后跳转路 ...