Points Within

2023-11-04

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=81
Statement of the Problem

Several drawing applications allow us to draw polygons and almost all of them allow us to fill them with some color. The task of filling a polygon reduces to knowing which points are inside it, so programmers have to colour only those points.

You're expected to write a program which tells us if a given point lies inside a given polygon described by the coordinates of its vertices. You can assume that if a point is in the border of the polygon, then it is in fact inside the polygon.

Input Format

The input file may contain several instances of the problem. Each instance consists of: (i) one line containing integers N, 0 < N < 100 and M, respectively the number of vertices of the polygon and the number of points to be tested. (ii) N lines, each containing a pair of integers describing the coordinates of the polygon's vertices; (iii) M lines, each containing a pair of integer coordinates of the points which will be tested for "withinness" in the polygon.

You may assume that: the vertices are all distinct; consecutive vertices in the input are adjacent in the polygon; the last vertex is adjacent to the first one; and the resulting polygon is simple, that is, every vertex is incident with exactly two edges and two edges only intersect at their common endpoint. The last instance is followed by a line with a 0 (zero).

Output Format

For the ith instance in the input, you have to write one line in the output with the phrase "Problem i:", followed by several lines, one for each point tested, in the order they appear in the input. Each of these lines should read "Within" or "Outside", depending on the outcome of the test. The output of two consecutive instances should be separated by a blank line.

Sample Input

3 1
0 0
0 5
5 0
10 2
3 2
4 4
3 1
1 2
1 3
2 2
0

Sample Output

Problem 1:
Outside

Problem 2:
Outside
Within

YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
#include<stdio.h>
#include<math.h>
struct point 
{
	double x,y;
};
point p[120];
int m,n;
double MIN(double x,double y)
{
	return x<y?x:y;
}
double MAX(double x,double y)
{
	return x>y?x:y;
}
int xdy(double x,double y)
{
	return x>y;
}
int xxy(double x,double y)
{
	return x<y;
}int xddy(double x,double y)
{
	return x>=y;
}
int xxdy(double x,double y)
{
	return x<=y;
}
int xdddy(double x,double y)
{
	return fabs(x-y)<1e-6;
}
double cross(point a,point b,point c)
{
	return (c.x-a.x)*(b.y-a.y)-(b.x-a.x)*(c.y-a.y);
}
int onsegement(point a,point b,point c)
{
	double d1=MIN(a.x,b.x);
	double d2=MAX(a.x,b.x);
	double d3=MIN(a.y,b.y);
	double d4=MAX(a.y,b.y);
	if(d1<=c.x&&c.x<=d2&&d3<=c.y&&c.y<=d4)
	return 1;
	return 0;
}
int segment(point a,point b,point c,point d)
{
	double d1=cross(c,d,a);
	double d2=cross(c,d,b);
	double d3=cross(a,b,c);
	double d4=cross(a,b,d);
	if(d1*d2<0&&d3*d4<0)
	return 1;
	if(d1==0&&onsegement(c,d,a))
	return 1;
	if(d2==0&&onsegement(c,d,b))
	return 1;
	if(d3==0&&onsegement(a,b,c))
	return 1;
	if(d1==0&&onsegement(a,b,d))
	return 1;
	return 0; 
}
int inploy(point a)
{
	point b;
	b.x=1e10,b.y=a.y+50;
	int i,j,k,l,tmp,cout=0;
	for(i=0;i<m;i++)
	{
		if(cross(p[i],p[(i+1)%m],a)==0&&onsegement(p[i],p[(i+1)%m],a))
		return 1;
		//printf("cout==%d\n",cout);
		tmp=-1;
		if(cross(a,b,p[i])==0&&onsegement(a,b,p[i]))
		tmp=i;
		else if(cross(a,b,p[(i+1)%m])==0&&onsegement(a,b,p[(i+1)%m]))
		tmp=(i+1)%m;
		if(tmp!=-1&&xdddy(p[tmp].y,MAX(p[i].y,p[(i+1)%m].y)))
		cout++;
		else if(tmp==-1&&segment(p[i],p[(i+1)%m],a,b))
		cout++;
	}
	if(cout%2==0)
	return 0;
	else 
	return 1;
}
int main()
{
	int i,j,k,ind=1;
	while(scanf("%d",&m),m)
	{
		scanf("%d",&n);
		if(ind!=1)
		printf("\n");
		printf("Problem %d:\n",ind++);
		for(i=0;i<m;i++)
		scanf("%lf%lf",&p[i].x,&p[i].y);
		while(n--)
		{
			point a;
			scanf("%lf%lf",&a.x,&a.y);
			if(inploy(a))
			printf("Within\n");
			else
			printf("Outside\n");
		}
		
	}
	return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Points Within 的相关文章

  • CSS 隐藏输入按钮值文本

    我目前正在设计一个
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • 为什么 strcat() 之后字符串会被改变?

    这是源代码 int main char str dance char str1 hello char str2 abcd strcat str1 str2 printf s str output bcd why str更改后strcat s
  • 如何测试具有多个输入调用的循环?

    我正在尝试测试一个依赖多个用户输入来返回某个值的函数 我已经在这里寻找了多个答案 但没有一个能够解决我的问题 我看到了参数化 模拟和猴子补丁的东西 但没有任何帮助 我认为很大程度上是因为我没有清楚地理解正在做的事情背后的概念 并且我无法适应
  • html() 与 innerHTML jquery/javascript 和 XSS 攻击

    我正在对我自己的代码测试 xss 攻击 下面的示例是一个简单的框 用户可以在其中输入他想要的任何内容 按 测试 后按钮 JS 会将输入字符串显示为两个 div 这是我为了更好地解释我的问题而制作的示例
  • 如何将 CSS 样式应用于四开输出

    我想将样式应用于四开块输出 我做的第一件事就是在类中嵌入一些 CSS 属性 output在四开文档中 然后使用以下内容引用它 r class output output 它有效 但我认为它不是很有效 因为我必须在每个文档中编写它 所以我写了
  • Android 多点触控:ACTION_UP 并不总是被调用?

    我开发了一个在视图中处理多点触控的 Android 应用程序 我基本上跟踪可能发生的几个 MotionEvent 例如 ACTION UP ACTION MOVE 我在 View 类中覆盖的 onTouch 方法如下所示 public bo
  • 过滤(搜索和替换)InputStream 中的字节数组

    我有一个 InputStream 它将 html 文件作为输入参数 我必须从输入流中获取字节 我有一个字符串 XYZ 我想将此字符串转换为字节格式 并检查从 InputStream 获得的字节序列中是否存在与该字符串匹配的字符串 如果有的话
  • 如何使用户输入与变量相关?

    我不知道如何准确地表达这个问题 但这就是我想要实现的目标 我正在使用堆栈实现河内塔插图 这是里面的main 功能 System out println Type the source pole number and the destinat
  • jQuery 输入事件在 IE 中的占位符上触发

    我有一个输入字段input绑定到它的事件 通过 jQuery 每次输入值更改时都应触发此事件 我添加了一个占位符来告诉用户此输入字段的用途 如果用户单击此输入字段input不应触发事件 该值实际上不会改变 只是占位符消失 它在 Firefo
  • 工具提示弹出窗口内的 Bootstrap 输入字段已从输出 html 中删除

    您好 我正在使用 bootstrap 4 3 1 并包含 popper 1 14 7 通常我可以在弹出窗口 工具提示的内容中添加输入字段 我从什么时候开始就不知道了 但是当我将输入字段放入内容中时 只有文本可见 当我查看源代码 编译后的 h
  • TensorFlow:在训练时更改变量

    如果我将输入管道从 feed dict 更改为 tf data dataset 如何在每次迭代后的训练期间更改网络内参数的值 澄清一下 旧代码看起来像这样 Define Training Step model is some class t
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 编辑时可以在文本框控件内使用 Angular 的管道格式化程序吗?

    我已经声明了一种将大数字分成三位数组的格式 并像这样经常使用它 div Huge number i am huge make threesome div 现在 有一个对相应功能的请求 但在像这样的输入控件中实现
  • 在 Chrome 中显示输入 type=date-local 的秒数

    在谷歌浏览器中 如果我设置 type 输入的值datetime local包含秒的时间 其中秒值为 0 Chrome 决定不在输入中显示秒值 这意味着用户根本无法设置秒 例如 如果我将值设置为2013 10 24T20 36 01然后Chr
  • 使用 C# .NET 从操纵杆获取输入

    我在谷歌上搜索了这个 但我想到的唯一的东西已经过时并且不起作用 有人知道如何使用 C NET 获取操纵杆数据吗 由于这是我在研究 C 中的操纵杆 游戏手柄输入时在 google 上获得的最高点击次数 因此我认为我应该发布一个回复供其他人查看
  • 解析dev/input/event触摸事件

    我能够在 Android 手机上从 dev input event 读取事件 然而 它们是按一定顺序排列的行代码 就像触摸事件给出的那样 3 53 216 3 54 444 3 48 40 3 50 5 0 2 0 0 0 0 如何将它们解
  • 使用 Javascript 从 HTML 表格输入单元格获取值

    我使用 Javascript 动态创建了一个 HTML 表 其中第一列由文本字段组成 第二列由输入字段组成 第三列由文本字段组成 效果很好 nrOfRows document getElementById myId value get nr
  • 将快速文本输入发送到另一个进程(窗口)

    我正在编写一个 C WPF 程序 它将文本消息发送到另一个程序的窗口 我有一个宏程序作为我的键盘驱动程序 Logitech g15 的一部分 它已经做到了这一点 尽管它不会将击键直接发送到进程 而是发送到当前聚焦的窗口 它运行良好 但我也需
  • Javascript - 使数组索引 toLowerCase() 不起作用

    我试图将所有数组索引设置为小写字符串 但它不起作用 我在这里查看了其他答案并尝试了他们的解决方案 例如使用toString 添加之前toLowerCase但它不起作用 这很奇怪 我创建了一个问题的jsfiddlehere https jsf

随机推荐

  • 【Linux】进程控制,进程替换

    1 进程创建 fork函数初识 在linux中fork函数时非常重要的函数 它从已存在进程中创建一个新进程 新进程为子进程 而原进程为父进程 include
  • 第一章:10道C/C++经典面试题

    http blog csdn net rl529014 article details 52029524 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 面试题 1 变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义
  • 深度学习输入输出特征图尺寸计算&&卷积的填充方式

    1 卷积层输入特征图 input feature map 的尺寸为 H input W input C input 依次为输入特征图的高 宽 通道数 2 输出通道数K 即卷积核个数 正方形卷积核的边长为F 步幅 stride 为S 补零的行
  • 使用IntelliJ IDEA 配置Maven(入门)

    http blog csdn net qq 32588349 article details 51461182
  • 利用MATLAB求均值、方差和标准差

    1 均值 数学定义 Matlab函数 mean 如果X是一个矩阵 则其均值是一个向量组 mean X 1 为列向量的均值 mean X 2 为行向量的均值 若要求整个矩阵的均值 则为mean mean X 或者mean2 X 2 方差 数学
  • 最适合小白的matlab教程系列_进阶系列一

    目录 二维平面图形 plot函数 我们更少不了图形的修饰 图形窗口分割 几个图 plot3函数 绘制三维曲面的函数 标准三维曲面 三维图形视点处理 二维平面图形 plot函数 命令格式 plot x y x位横坐标值 y为纵坐标值 plot
  • 密度聚类算法(DBSCAN)实验案例

    密度聚类算法 DBSCAN 实验案例 描述 DBSCAN是一种强大的基于密度的聚类算法 从直观效果上看 DBSCAN算法可以找到样本点的全部密集区域 并把这些密集区域当做一个一个的聚类簇 DBSCAN的一个巨大优势是可以对任意形状的数据集进
  • 面向对象编程类的内聚性

    高内聚 低耦合是软件设计中非常关键的概念 在面向对象程序设计中类的划分时 类的内聚性越高 其封装性越好 越容易复用 以下在类划分时关于内聚性的问题 静态类的设计 在软件设计中 我们经常会将一些通用的方法封装到一个类中 这种类只包含方法 没有
  • algorithm.h C艹

    include
  • MySQL数据库基础表格——增删改查(上)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 树高千尺 落叶归根人生不易 人间真情 前言 不要太在乎别人对你的评价 做好自己个人 干好自己的事 走好自己的
  • 对比APK的数字签名是否一致

    目前在做一个应用商店的项目 有一个场景 比如手机上已经安装了一个被篡改过的QQ应用 通过本应用商店下载了一个官方版的QQ应用 在替换安装时提示签名不一致 安装失败 那么这时需要卸载掉已安装的QQ 再安装官方版QQ 所以需要验证一下已安装QQ
  • 服务器数据恢复-ESX SERVER常见故障的数据恢复的可能性分析

    ESX SERVER常见故障表现 1 因光纤存储设备连接至非ESX环境 共享未互斥 对存储进行的改写操作 如 重装系统 WINDOWS初始化 格式化等 导致存储结构损坏 2 卷升级 变更时分区表或VMFS卷结构异常 3 VMFS存储中VMD
  • URL下载网络资源

    URL 统一资源定位符 定位互联网上的某一个资源
  • $AT2663$ $Namori$ $Grundy$

    题目链接戳这里 简化题意 题意 有一个弱联通的有向图 含有 个结点和 条边 试问是否存在方案 赋给每个结点一个自然数权值 满足对于所有结点 mex in 一个集合的 mex 是没有在这个集合中出现的最小自然数 显然是个基环树 先考虑在树上的
  • python爬取百度百科

    来源于imooc教程实例 课程地址http www imooc com learn 563 以下是自己经过每一步分析 最后成功完成 代码模块化结构分明 不过自己一开始分析还是有点晕晕的 毕竟还不太习惯 以后多练习吧 每一份的收获都来之不易
  • jqGrid学习总结_5 使用formatter

    1 formatter与unformat官网 http www trirand com jqgridwiki doku php id wiki custom formatter formatter functionFormatter cel
  • IDEA设置自动生成类和方法注释

    以IDEA2020 3版本进行说明 一 设置创建类时生成的注释 打开 File gt settings gt Editor gt File and Code Templates 或者在搜索框搜索File and Code Templates
  • 关于antd中popover气泡卡片deep修改样式不生效问题

    今儿写代码的时候遇到的一个问题 原是因为使用气泡组件出现的定位位置不对 查出是因为全局上写了一个zoom属性 但是这个zoom属性因为在其他组件上使用了不能动 所以考虑修改气泡组件的样式来自定义位置 利用deep修改样式后发现样式不生效 后
  • 使用pandas to_sql方法进行数据整合和清洗

    使用pandas to sql方法进行数据整合和清洗 在数据科学和数据分析领域 数据集的整合和清洗是非常重要的 而pandas是一个强大的数据处理库 它提供了to sql 方法 可以将Dataframe对象保存到多种不同类型的SQL数据库中
  • Points Within

    http acm zju edu cn onlinejudge showProblem do problemId 81 Statement of the Problem Several drawing applications allow