-
//zoj1081 Points Within
-
//Accepted 1081 C++ 00:00.00 396K
-
//(?)处有问题,不过还是AC了
-
#include <stdio.h>
-
#define MAXN 100
-
#define INF 1e10
-
struct point { double x,y;};
-
int n;
-
double xmult(double x1,double y1,double x2,double y2){return x1*y2-x2*y1;}
-
double xmult3(point p1,point p2,point p0)
-
{return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}
-
//判点p1、p2在线段p3p4同侧(不包括在直线线上)
-
bool same_side(point p1,point p2,point p3,point p4)
-
{
-
double dx,dy,dx1,dy1,dx2,dy2;
-
dx = p4.x-p3.x, dy = p4.y-p3.y;
-
dx1 = p1.x-p3.x, dy1 = p1.y-p3.y;
-
dx2 = p2.x-p4.x, dy2 = p2.y-p4.y;
-
return xmult(dx,dy,dx1,dy1)*xmult(dx,dy,dx2,dy2)>0.0;
-
}
-
//判p1p2与p3p4相交(包括端点)
-
bool intersect(point p1,point p2,point p3,point p4)
-
{
-
return (!same_side(p1,p2,p3,p4) && !same_side(p3,p4,p1,p2));
-
}
-
//判点q在线段p1p2上(包括端点)
-
bool dot_online(point q,point p1,point p2)
-
{
-
return xmult3(q,p1,p2)==0.0 &&
-
(q.x-p1.x)*(q.x-p2.x)<=0.0 &&
-
(q.y-p1.y)*(q.y-p2.y)<=0.0;
-
}
-
//判点q在多边形P(p[0,1,...,n-1]为P的邻接顶点)内(包括在边上),射线穿刺、奇偶校验法
-
/* Special case
-
y| __
-
| / /
-
| / .__/____//______qs
-
| / q /
-
___|____/____________/____x
-
| /__________/
-
(a) q->qs overlap the edge of P
-
-
y| __
-
| / /
-
| / /_.__//
-
| / q /
-
___|____/____________/____x
-
| /__________/
-
(b) q is on the edge of P (true)
-
-
y| __
-
| /._/_____________qs
-
| / q /____//
-
| / /
-
___|____/____________/____x
-
| /__________/
-
(c) q->qs cross the vertex of P
-
-
y| __
-
| / /
-
| / /____//
-
| / q.________/______qs
-
___|____/____________/____x
-
| /__________/
-
(d) q-qs cross the vertex of P
-
-
Sample Input
-
9 5
-
-
1 1
-
4 1
-
6 3
-
5 5
-
4 4
-
2 4
-
1 6
-
-1 6
-
-3 3
-
-
1 4(a)
-
3 4(b)
-
1 5(c)
-
1 3(d)
-
-5 3(d)
-
0
-
-
Sample Output
-
Within
-
Within
-
Within
-
Within
-
Outside
-
*/
-
bool inside_polygon(point q,point *p,int n)
-
{
-
point qs=q;
-
qs.x = INF;//construct radial q->qs
-
int cnt = 0;
-
for (int i=0; i<n; ++i){
-
int j=(i+1)%n,k=(i+2)%n;
-
if (dot_online(q,p[i],p[j])) return true;//case (b)
-
if (intersect(q,qs,p[j],p[k])) cnt++;//case (c) and common
-
//(?) if (dot_online(p[j],q,qs) && !same_side(p[i],p[k],q,qs)) cnt--;//case (d)
-
//(?) if (dot_online(p[j],q,qs) && dot_online(p[k],q,qs)) cnt--;//case (a)
-
}
-
printf ("%d",cnt);
-
return cnt%2!=0;
-
}
-
void solve()
-
{
-
int m;
-
point q,p[MAXN];
-
scanf ("%d",&m);
-
for (int i=0; i<n; ++i) scanf ("%lf %lf",&p[i].x,&p[i].y);
-
while (m--){
-
scanf ("%lf %lf",&q.x,&q.y);
-
if (inside_polygon(q,p,n))
-
printf ("Within/n");
-
else printf ("Outside/n");
-
}
-
}
-
int main()
-
{
-
#ifdef ONLINE_JUDGE
-
#else
-
freopen("1081.txt","r",stdin);
-
#endif
-
int t=0;
-
while (scanf("%d",&n)!=EOF && n){
-
if (t) printf ("/n");
-
printf ("Problem %d:/n",++t);
-
solve();
-
}
-
#ifdef ONLINE_JUDGE
-
#else
-
fclose(stdin);
-
#endif
-
return 0;
-
}
相关推荐
CCF201803-2 碰撞的小球 python
一些话:已经不知道是第几次做这道题了(大概第三次吧),真的常做常新,每次都有新的细节想法。虽然方法简单粗暴,但好在方便理解,对于我这种菜鸟选手而言。 但在做的过程中,最开始还忽略了输入的小球初始位置有可能是无序的,输出的时候要保持相对位置。CCF真的考验细节,希望上考场时能够认真仔细一点。就酱… #碰撞的小球 #当小球坐标为0或L时,会朝相反方向移动 #当两个小球坐标相等时,会分别转向相反的方向 #计算t秒之后小球的位置 n,L,t = map(int,input().split()) location .
zoj 1081:Points Within(点在多边形内部)
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 24 Accepted Submission(s) : 7 Problem Description Statement of the Problem Several drawing applications allow us to draw polygons and almost all of the
A类功率放大器
在A类放大器中,导通角是完整的360°或100%的输入信号,而在其他类别的放大器中,晶体管在一个较小的导通角内导通。通过在输出级使用两个互补的晶体管,其中一个晶体管是NPN或N通道类型,而另一个晶体管是PNP或P通道(互补)类型,以所谓的 "推挽 "配置连接,可以获得比A类放大器更大的功率输出和效率。这种类型的电路效率很低(低于30%),而且对直流电源的消耗很大,输出的功率却很小。由于我们感兴趣的是向负载提供最大的交流功率,同时从电源中消耗尽可能少的直流电,所以我们主要关注的是放大器的 "转换效率"。
ZOJ1081 Points Within(射线法判点是否在多边形内)
题目传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=81 【题目大意】 用顶点描述一个多边形,给你几个点(按照顺序给出),对于每个点,如果在多边形内部就输出“Within”,否则输出“Outside”,如果点在边上则视为在内部。 【输入格式】 题目包含多组数据,对于每组数据,先输出“Problem id:”(id...
Julia Ann老司机管理系统
https://content.badgirlsusa.com/Julia_Ann-Sexy_Julia_Ann_Fucks_A_Lil_Elf's_Big_Cock_/Julia-Ann-Naughty-America-%E6%80%A7%E6%84%9F%E7%9A%84%E8%A3%98%E8%8E%89%E5%A9%AD%E5%AE%89%E4%BA%82%E6%90%9E-lil-%E7%B2%BE%E9%9D%88%E7%9A%84%E5%A4%A7%E5%85%AC%E9%9B%9E-2020
【Zemax光学设计实训一】---单透镜光学设计
建立一个焦距为100mm、入瞳直径为25mm的单透镜系统,该透镜中心厚度为4mm,其两个面的曲率半径分别为100mm、-100mm,全视场2w=10°。该系统在可见光下工作,采用BK7玻璃,光阑设置在人射光线遇到的透镜的第一个光学表面;并对其展开优化。
zoj1081(点与多边形的位置关系)
题目大意: 给定一个点数为 n 的多边形,点按照顺序给出,再给出 m 个点,询问每个点是否在多边形内。 n <= 100。 样例数据 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:
Triton推理服务器实战:如何为PaddleOCR的ONNX模型配置动态批处理和并发推理
本文详细介绍了如何使用Triton推理服务器为PaddleOCR的ONNX模型配置动态批处理和并发推理,以提升GPU利用率和推理性能。通过实战案例和参数调优指南,帮助开发者解决高并发场景下的性能瓶颈问题,实现从实验室到生产环境的高效部署。
ZOJ1081(射线法判断点是否在多边形内部)
通往快乐老家的路 射线法判是否在多边形内部的板子吧 射线法:过该点做一条平行于x轴的射线 ,若该与多边形有奇数个交点,则该点在多边形内部 这可以转化为求改点与多边形的每一条边是否有交点 但要注意一些特殊情况,比如交点时多边形的顶点,这时我们需要规定交在边的下端点 统计进答案或是交在边的上端点统计进答案 (也就是保证一个点要么都被统计要么都不被统 计)...
Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析
Manus通用AI智能体完全使用指南(2025最新版)——从注册到高阶技巧全解析
EXCEL VBA从入门到精通 第一章:VBA入门
在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。
ZOJ1081 Points Within,判断点是否在多边形 内
/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-11-15 21:31 # Filename: ZOJ1081 Points Withi
NPC 三电平逆变器中点电位平衡算法详解
最常用:零序电压注入(简单、计算量小)最可靠:虚拟空间矢量调制(VSVPWM)及其改进形式(全范围平衡)趋势:结合模型预测控制(MPC)或智能算法(模糊、神经网络)进一步提升动态性能和鲁棒性。NPC 三电平逆变器中点电位平衡算法的 C# 实现示例(零序电压注入法 + 闭环补偿)在 NPC(Neutral Point Clamped)三电平逆变器中,中点电位平衡最常用且易于软件实现的方案是零序电压注入法。
ZOJ1081 Points Within
几何:判断点在多边形内外
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
ZOJ 1081 Points Within
分析:按顺序给你n边形的n个坐标,和一些点的坐标,让你判断这些点是不是在多边形内。用改进弧长法来求解比较好,原理可参看网上的,下面附我写的代码。 # include typedef struct point { int x,y; }Point; Point v[105]; int main() { int i,n,m,cur,nex,ans,f,
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
【ZOJ1081】Points Within
Points Within Time Limit: 2 Seconds Memory Limit: 65536 KB Stateme...
zoj 1081 Points Within
改进弧长算法 要求多边形是有向多边形#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm>using namespace std; struct node { double x, y; } p[105], pp[105];int inpolygo
ZOJ1081:Points Within——题解
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1081 题目大意:给定一个点数为 n 的多边形,点按照顺序给出,再给出 m 个点,询问每个点是否在多边形内。 —————————————————————————————— 计算几何开荒期,所以都算是板子吧……既然是板子那么题解自然也都是集网上之大成。 所以以后也就不多...
zoj 1081 Points Within[判断点在简单多边形内]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=81 题目的很简单
[学习][ZOJ1081]点、直线关系 Points Within
题目: Points WithinTime Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 24 Accepted Submission(s) : 7 Problem Description Statement of the Proble
【ZOJ 1081】Points Within
算法标签:计算几何(点与多边形的关系)
350



被折叠的 条评论
为什么被折叠?



