HDU 1756 Cupid's Arrow 计算几何

HDU 1756 Cupid's Arrow(计算几何---判断点是不是在多边形内) 原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=1756 模板题 #include <bits/stdc++.h> #define eps 1e-8 #define INF 0x3f3f3f3f #define PI acos(-1) #define lson l,mid,rt<< 阅读详情

   题目:http://acm.hdu.edu.cn/showproblem.php?pid=1756

   判断点是否在多边形内部

   从点p做一条射线,看射线和多边形的交点有几个,奇数个为相交,偶数个不相交。。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<vector>
#include<queue>
#include<math.h>
#include<map>
#include<set>
using namespace std;
#define LL __int64
#define pii pair<int,int>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int MAX=110,INF=200000000;
const double esp=1e-6;
int max(int x,int y){return x>y?x:y;}
int min(int x,int y){return x<y?x:y;}
struct Line{
	int x1,y1,x2,y2;
};
struct Node{
	int x,y;
}nod[MAX];
int chaji(Node &a,Node &b){
	return a.x*b.y-b.x*a.y;
}
int quick(Node &l1,Node &l2,Node &r1,Node &r2);
int las(Node &l1,Node &l2,Node &r1,Node &r2);
int ponls(Node &a,Node &b,Node &p);
int pinply(int num_node,Node nod[],Node &p);
int n,m;
int main()
{
//	freopen("in.txt","r",stdin);
	int i;
	Node p;
	while(~scanf("%d",&n))
	{
		for(i=0;i<n;i++)
			scanf("%d%d",&nod[i].x,&nod[i].y);
		scanf("%d",&m);
		while(m--){
			scanf("%d%d",&p.x,&p.y);
			if(pinply(n,nod,p))
				printf("Yes\n");
			else printf("No\n");
		}
	}
	return 0;
}

int pinply(int num_node,Node nod[],Node &p)
{
	int i,j,cou=0;
	Node ray;
	ray.x=-1,ray.y=p.y;
	for(i=0;i<num_node;i++){
		j=(i+1)%num_node;
		if(ponls(nod[i],nod[j],p))return 0;
		if(nod[i].y!=nod[j].y){
			if(ponls(p,ray,nod[i]) && nod[i].y==max(nod[i].y,nod[j].y))
				cou++;
			else if(ponls(p,ray,nod[j]) && nod[j].y==max(nod[i].y,nod[j].y))
				cou++;
			else if(quick(nod[i],nod[j],p,ray) && las(nod[i],nod[j],p,ray)
				&& las(p,ray,nod[i],nod[j]))
				cou++;
		}
	}
	return cou&1;
}

int ponls(Node &a,Node &b,Node &p)
{
	if( (p.x==a.x && p.y==a.y) || (p.x==b.x && p.y==b.y) )return 2;
	Node r1,r2;
	r1.x=a.x-b.x,r1.y=a.y-b.y;
	r2.x=p.x-b.x,r2.y=p.y-b.y;
	if(!chaji(r1,r2) && p.x>=min(a.x,b.x) && p.x<=max(a.x,b.x) 
		&& p.y>=min(a.y,b.y) && p.y<=max(a.y,b.y))
		return 1;
	return 0;
}

int quick(Node &l1,Node &l2,Node &r1,Node &r2)
{

	if(min(l1.x,l2.x)>max(r1.x,r2.x)
		|| min(l1.y,l2.y)>max(r1.y,r2.y)
		|| max(l1.x,l2.x)<min(r1.x,r2.x)
		|| max(l1.y,l2.y)<min(r1.y,r2.y))
		return 0;
	return 1;
}

int las(Node &l1,Node &l2,Node &r1,Node &r2)
{
	Node a,b,c;
	a.x=l1.x-r1.x;
	a.y=l1.y-r1.y;
	b.x=r2.x-r1.x;
	b.y=r2.y-r1.y;
	c.x=l2.x-r1.x;
	c.y=l2.y-r1.y;
	if( ((a.x*b.y)-(b.x*a.y))*((c.x*b.y)-(b.x*c.y))<0)return 1;
	else return 0;
}

SGX软硬件栈(二)——硬件指令 硬件指令分为内核权限硬件指令和用户权限硬件指令。内核权限硬件指令指的是指令需要通过内核态下才能访问,缩写是ENCLS。用户权限硬件指令指的是指令用户态下便能访问,缩写是ENCLU。每一个具体的功能指令被称为叶功能,如EADD叶功能,因为叶功能之间的区分是硬件指令(如ENCLS指令:0x 0F 01 CF)的EAX值不同,因此ENCLS指令的EAX在输入时都是用作叶功能号。 内核权限硬件指令-ENCLS 如图2所示,SGX 1代指令中,ENCLS主要用于管理Enclave生命周期等。比如下文将介绍的Enc 阅读详情

相关推荐

Keil5安装多版本共存方案:实用技巧分享

分享Keil5安装过程中实现多版本共存的实用方法,解决开发环境冲突问题。通过合理配置路径与版本管理,让keil5安装更高效稳定,提升嵌入式开发体验。

weixin_42514750的博客 1527

HDU 1756 (计算几何 点在多边形内)

多边形可能是凹的所以不能用to_left_tset测试。 直接用板子。 #include using namespace std; typedef unsigned long long ll; #define maxn 111 struct point { double x, y; point (double _x = 0, double _y = 0) : x(_x),

morejarphone~ 935

从零到一:ESP32-P4 PPA加速的配置陷阱与避坑指南

本文详细解析ESP32-P4结合LVGL的PPA硬件加速配置中的常见陷阱,包括内存对齐、缓冲区设置和同步机制等关键问题。提供实用的避坑指南和优化方案,帮助开发者高效启用esp32p4的PPA加速功能,显著提升图形渲染性能。

sky77的博客 396

HDU1756(判断一个点是否在多边形内)

以下内容是在自己学习中总结出来了的,如果有什么错误,请指出,谢谢! 判断一个点是否在多边形内: (1)判断方法一(具有一定的局限性):将测试点的Y坐标与多边形的每一个点进行比较,将得到一 个与多边形的交点列表 。如果测试点的两边点的个数是奇数数个,则测试点在多边形内,否则 在多边形外。 (2)判断方法二:当测试点的扫描线正好穿过多边形的一个顶点时,扫描线与边a有一个交点,与边 b也有一个交点,一共两个角点,右边也是同样的情况下,则依据判断方法一,这个测试线点在 多边形外。但是这个测试点实际上在多边形内,所以

Keep_Trying_Go的博客 768

IBM x3650M4服务器更换主板后,导入原有硬盘阵列信息

x3650m4服务器主板坏了,更换好的主板,需要导入原来硬盘的里面的阵列信息 1、开机有提示信息,按C导入配置 2、按Y继续 3、点击start进入阵列卡配置 4、选择configurations 1,点击preview 5、预览硬盘的阵列信息,点击import导入 6、导入成功,可以查看到阵列信息 7、重启服务器,进入操作系统 如果重启找不到操作系统,重启按f12,手动选择从onboard sas controller启动,进入系统一次后面重启就会自动找到并引导系统了。 8、有时候导入阵列

zds00virtue的博客 2万+

手把手教你用Matlab搞定GRACE RL06数据读取:冯伟老师工具箱无GUI版实战

本文详细介绍了如何使用Matlab处理GRACE RL06数据,重点解析了冯伟教授工具箱的无GUI版实战操作。通过环境配置、核心函数改造和批处理技巧,帮助科研工作者高效完成重力场数据的读取与分析,特别适合服务器集群环境下的批量处理需求。

weixin_29313817的博客 200

详谈判断点在多边形内的七种方法(最全面) hdu1756 hrbust1429 为例

这几天在学计算几何,学到点定位的判断点在多边形内,书上提到了三种方法,但是有些方法的代码不全。于是网上找了找,又发现更多判断的方法,一时兴起决定学习一下,看看到底有多少种,结果一个大坑。。。 网上好多介绍的不详细(特别是转角法,最后还是google出来的),而且有些方法叫不同的名字,有点难搞啊,花了我一天多的时间。。TAT话不多说,下面分享一下。有些方法我会介绍清楚但不会画图详解,希望大家自己画图

WilliamSun0122的博客 6万+

S参数反演法

等效介质理论模型— 利用S参数反演法提取超材料结构的等效参数 等效介质理论模型—利用S参数反演法提取超材料结构的等效参数 S参数反演法,即利用等效模型的传输矩阵和S参数求解超材料结构的等效折射率n和等效阻抗Z的过程。本文对等效介质理论模型进行了详细介绍,并提供对应代码。 超材料的传输矩阵 超材料结构的传输矩阵函数为: 其中,d 为等效光学活性材料的厚度,n 为折射率,Z 表示阻抗。 S参数和传输矩阵T 超材料结构的S参数和传输矩阵T满足下列方程: 利用以上两式,可以得到等效折射率n和相对阻抗的表达式

weixin_43962864的博客 1万+

hdu 1756(判断点是否在多边形中)

传送门 题解:   射线法判定点是否在多边形内部; AC代码:    1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 const double esp=1e-8; 6 const int maxn=100...

weixin_30878361的博客 194

数据科学技术与应用【中国大学MOOC】:数据可视化_第五次作业_答案

数据科学技术与应用 数据可视化 第五次作业 答案 题目来源:中国大学MOOC-东华大学-宋晖等-数据科学技术与应用 1 ( 30分 ) 2012—2017年我国人均可支配收入为[1.47, 1.62, 1.78, 1.94, 2.38, 2.60](单位:万元)。按照要求绘制以下图形。 1)模仿例4-1和例4-3,绘制人均可支配收入折线图。用小矩形标记数据点,黑色虚线,用注解标注最高点,图标题为“Income chart”,设置坐标轴标题,最后将图形保存为JPG文件。 2)模仿例4-2,使用多个子图分别绘制

Herbert胡不归 6140

【python科研数据处理】将Endnote自动搜索的所有pdf文件,全都移动指定文件夹中

将Endnote自动搜索到的全部pdf文件,全都移动指定文件夹中1 背景2 问题解决 手动反爬虫,禁止转载:原博地址 https://blog.youkuaiyun.com/lys_828/article/details/122370892(优快云博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在优快云网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息 1 背景 在进行期末考试周后,面对最后一门功课,需要提交至少80篇SCI参考文献,因此最快下载文献的方式就是通过Web of S

lys_828的博客 1826

hdu__1756 Cupid's Arrow

http://acm.hdu.edu.cn/showproblem.php?pid=1756 /** 题意:题目是中文的 分析:首先我们输入的多边形有可能是凸多边形,也可能是凹多边形,所以我们这里使用弧长法, 弧长法适用于所有的多边形。接下来我们简单讲解一下弧长法 弧长法要求多边形是有向多边形,因为我们输入多边形的时候是是按照顺序读入的所以符合第一点 有向我们只要自己规定哪边为正向就可

lfz95的专栏 1444

【虚拟仿真】Unity3D中实现对大疆无人机遥控器手柄按键响应

最近项目中需要用到大疆无人机遥控器对程序中无人机进行控制,遥控器是下图这一款:博主发现接入手柄这块的可以参考的内容非常少,对于大疆遥控器的控制更是没有。博主经过一番研究,终于理通了这块的遥控器摇杆数据的控制。并且将解决思路分享出来,希望对大家有所帮助。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2819

ACM-计算几何之Cupid's Arrow——hdu1756

ACM 计算几何 Cupid's Arrow hdu1756 点在多边形内 射线法 射线法详解

继续激情,继续奋斗。 3189

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hdu 1756 Cupid's Arrow 计算几何

判断一个点是否在多边形之内,我开始是使用叉乘求面积,wa了一段时间后然后发现这个算法是错误的,于是上网搜了题解,我的写法参考了这篇文章http://blog.youkuaiyun.com/lfz95/article/details/8037685 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1756 #include #include const do

NM的专栏 686

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

hdu 1756 Cupid's Arrow(计算几何)

题目链接:hdu 1756 Cupid's Arrow 题意: 顺时针给你n个点,然后m个询问,问你给出的点是否在n个点构成的多边形的内部。 题解: 直接上模板。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 #define MAXN 1007 4 #def...

weixin_30407099的博客 154

hdu 1756 Cupid's Arrow (计算几何,点是是否完全在多边形内)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1756 Cupid's Arrow Problem Description 传说世上有一支丘比特的箭,凡是被这支箭射到的人,就会深深的爱上射箭的人。 世上无数人都曾经梦想得到这支箭。Lele当然也不例外。不过他想,在得到这支箭前,他总得先学会射箭。 日子一天天地过,Lele的箭术也越来越强,渐...

Source_Roc 216

[HDU1756]Cupid's Arrow(计算几何-点在多边形内部)

题目: 我是超链接 题解: HDU的中文题?! 一看这个题不就是点在多边形内的裸题吗,为什么要发呢? 因为这个题目的图形不一定是凸多边形啊! 有什么关系呢?就是我们判断的时候不能只判断P点到AB的距离是不是0了,即不能仅仅判断是否共线,而是需要进一步用点积判断,就是下面这个图啦 那正确的判断姿势应该是。。 bool is_online(po p,po a,po b) {

薇小薇 370

hdu 1756:Cupid's Arrow(计算几何,判断点在多边形内)

Cupid's Arrow Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 849    Accepted Submission(s): 306 Problem Description 传说世上有一支丘比特的箭,凡是被这支箭射到的人,...

weixin_34018169的博客 119

HDU1756 Cupid's Arrow (判断点在多边形内) 省赛训练3 计算几何

Cupid’s ArrowTime Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1781    Accepted Submission(s): 661Problem Description 传说世上有一支丘比特的箭,凡是被这支箭射到的人,就会深深...

qq_27151549的博客 231

HDU1756 Cupid's Arrow平面几何

http://acm.hdu.edu.cn/showproblem.php?pid=1756   Cupid's Arrow Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3177    Accepted Sub...

lanshan1111的博客 272

HDU 1756 Cupid's Arrow(判定点在多边形内)

HDU 1756 Cupid's Arrow(判定点在多边形内) http://acm.hdu.edu.cn/showproblem.php?pid=1756 题意:        给你一个n个顶点的多边形,然后给你m个点的坐标,问你这m个点每个点是否在多边形内?(在边上也算) 分析:        对于简单多边形(边不自交)有两种方法可以判断,第一种是看该点与多边形每条边构成的三角形面

code 1262

HDU 1756 点在多边形内 Cupid's Arrow

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1756 分析:[射线法]           从已知点向x+oo远处向一水平射线,判断射线与多边形的交点个数,           若为偶数,则点在多边形外,反之则在多边形内。           注意几种特殊情况:                  1、边和射线共线;

PWZER 1152

HDU1756:Cupid's Arrow

射线法判点是否在多边形内

AbZoey's Blog 573

hdu 1756 Cupid's Arrow 点在多边形内部判定

题目地址:hdu1756

Jingqi@Mr.B的ACM博客 777

HDU 1756 Cupid's Arrow 判断点在多边形的内部

Cupid's Arrow Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1163Accepted Submission(s): 425 Problem Description 传说世上有一支丘比特的箭,凡是被...

dizhuo0219的博客 204
上一篇: POJ 1873 The Fortified Forest (计算几何,枚举+凸包)
下一篇: 线段树专题:hdu 1166敌兵布阵
CSUST_ACM
博客等级 码龄15年 42粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值