任选一个点作为起始点,将其他点按与该点连线的极角排序,二分查询点在哪两个射线之间, 并特别判断一下边界即可.

Code:

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 200000
const double eps = 0.000000000001;
using namespace std;
int n,m;
struct Point {
double x,y;
Point (double x = 0,double y = 0) : x(x),y(y){}
}point[maxn],ask[maxn];
int exis(double t) { return (fabs(t) <= eps) ? 0 : (t < 0 ? -1 : 1); }
double det(double x1,double y1,double x2,double y2) { return x1*y2-x2*y1; }
double cross(Point a,Point b,Point c) { return det(b.x-a.x,b.y-a.y,c.x-a.x,c.y-a.y); }
bool solve(){
memset(point,0,sizeof(point));
memset(ask,0,sizeof(ask));
for(int i = 1;i <= n; ++i) scanf("%lf%lf",&point[i].x,&point[i].y);
scanf("%d",&m);
for(int i = 1;i <= m; ++i) scanf("%lf%lf",&ask[i].x,&ask[i].y);
for(int i = 1;i <= m; ++i) {
int l = 2,r = n,ans = 0;
if(exis(cross(point[1],ask[i],point[2])) != 1 || exis(cross(point[1],ask[i],point[n])) != -1)
return false;
while(l <= r) {
int mid = (l + r) >> 1;
if(exis(cross(point[1],point[mid],ask[i])) == -1)
r = mid - 1;
else
ans = mid,l = mid + 1;
}
if(!(exis(cross(point[ans-1],point[ans],ask[i])) == -1)) return false;
}
return true;
} int main(){
//setIO("input");
while(scanf("%d",&n)!=EOF)
{
if(solve())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

  

凸多边形 HRBUST - 1429 计算几何_凸包_未调完的更多相关文章

  1. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  2. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  3. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  4. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  5. 3.IP地址分类_规划_子网掩码

    IP地址分类_规划_子网掩码 3.1MAC地址 网卡的身份证号———MAC地址 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20: ...

  6. 宏定义中的##操作符和... and _ _VA_ARGS_ _

    1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used i ...

  7. 宏 #,##,_ _VA_ARGS_ _

    宏里面使用: 一.#  转为字符串 #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x)) ...

  8. OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

    读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...

  9. 衬衫面料品牌:Alumo_衬衫_男装_男装:衬衫、法式衬衫、袖扣领带、西服西裤等男士正装服饰-仕族官网

    衬衫面料品牌:Alumo_衬衫_男装_男装:衬衫.法式衬衫.袖扣领带.西服西裤等男士正装服饰-仕族官网 衬衫面料品牌:Alumo

随机推荐

  1. elasticsearch多种搜索方式

    简要 1.query string search2.query DSL3.query filter4.full-text search5.phrase search6.highlight search ...

  2. HDU1058 - Humble Numbers

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  3. nyoj286-动物统计

    动物统计 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单.科学家想判 ...

  4. springboot 不使用前端模板直接跳转页面

    1.创建springboot项目 2.在resource 下创建pages文件夹,存放所有页面 3.编写后台代码 4.访问http://localhost:8080/index,即可跳转到页面

  5. 【POJ】3122 Pie [二分查找]

    题目地址:http://poj.org/problem?id=3122 二分每块饼的体积.为了保证精度,可以先二分半径的平方r*r,最后再乘以PI.要注意一点,要分的人数要包括自己,及f+1. #in ...

  6. zookeeper核心概念

    可以借鉴:https://blog.csdn.net/junchenbb0430/article/details/77583955 zookeeper的组成部分: 1. Leader:起主导集群的作用 ...

  7. struts配置

    创建struts2的应用,首先应如前面所示要搭建好环境.jar包的导入和web.xml配置这里不在写出来.  如上所示,struts2中是采用<package>元素来管理Action的,包 ...

  8. Photon + Unity3D 线上游戏开发 学习笔记(一)

    大家好. 我也是学习Photon + unity3D 的新手 有什么说错的地方大家见谅哈. 我的开发环境是 unity3D 4.1.3  ,   Visual Studio 是2010 版本号的  p ...

  9. iOS开发-文件管理之多的是你不知道的事(一)

    郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  10. 基于lucene的案例开发:纵横小说分布式採集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/46812645 http://www.llwjy.com/blogdetail/9 ...