【O(nlgn)判定点在凸包内】Codeforces Round #113 (Div. 2) B

原创 2012年03月29日 02:00:09

思路参考了这个bloghttp://hi.baidu.com/aekdycoin/blog/item/7abf85026f0d7e85d43f7cfe.html

复杂度是O(nlgn)

#define N 100005
struct node{
    double x,y;
}a[100005];
double cross(node a,node b,node c){//>0,ab在ac顺时针;<0,ab在ac逆时针
    return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y);
}
int n,m;
bool chk(node b){
    int i,j;
    if(cross(a[0],b,a[1]) <= 0)return false;
    if(cross(a[0],b,a[n-1]) >= 0)return false;
    int l = 0,r = n-1,mid;
    int tag = 0;
    while(l<=r){
        mid = (l+r)>>1;
        if(cross(a[0],b,a[mid]) >= 0){
            tag = mid;
            l = mid+1;
        } else r = mid-1;
    }
    l = tag,r = tag+1;
    if(cross(a[l],b,a[r]) <= 0)return false;
    return true;
}

int main(){
    cin>>n;
    int i,j;
    for(i=0;i<n;i++){
        cin>>a[i].x>>a[i].y;
    }
    int ans = 0;
    cin>>m;
    node b;
    for(i=0;i<m;i++){
        cin>>b.x>>b.y;
        if(chk(b))ans++;
    }
    if(ans==m)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}





















计算几何--O(logN) 判断点在凸多边形内

二维平面内判断点是否在一个简单多边形内部,在程序设计中我们一般采用射线法,或者内角和法。 如果这个简单多边形是一个凸多边形,可以在logN的时间复杂度内判断点是否在N个顶点的凸多边形中。 ...
  • acm_cxq
  • acm_cxq
  • 2016年04月30日 09:41
  • 1326

timus 1215. Exactness of Projectile Hit 判断点是否在凸包内部,点到线段的距离

timus  1215. Exactness of Projectile Hit   URAL 解题报告 题目描述真是无语,大概是一个导弹有一个落点,给定坐标; 然后有一个目标区域,问导弹的最小轰炸...
  • zhangyanxing666
  • zhangyanxing666
  • 2013年08月22日 17:12
  • 1765

【Codeforces Round 340 (Div 2)E】【莫队算法 真实区间思想】XOR and Favorite Number m组区间询问 问区间中多少连续段异或值为k

E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megab...
  • snowy_smile
  • snowy_smile
  • 2016年02月28日 13:06
  • 2847

【计算几何】Codeforces Round #113 (Div. 2)-B. Polygons

其实是很裸的一道几何题,题目要求的就是判断一个小的多边形是否完全且严格(两个多边形不能有交点)包含在另一个凸多边形里面。而解决的方法有很多,我这里用到的就是判断一个点是否完全且严格包含在一个多边形内,...
  • AndRing
  • AndRing
  • 2012年03月28日 21:14
  • 691

Codeforces Round #343 (Div. 2) B. Far Relative’s Problem(O(1)的线段标记)

time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandar...
  • miao_2cm
  • miao_2cm
  • 2016年03月24日 21:55
  • 221

Codeforces Round #221 (Div. 2) B. I.O.U.

B. I.O.U. time limit per test 1 second memory limit per test 256 megabytes input s...
  • u011639256
  • u011639256
  • 2013年12月25日 00:28
  • 778

Codeforces Round #113 (Div. 2)E---Tetrahedron(矩阵,水题)

You are given a tetrahedron. Let’s mark its vertices with letters A, B, C and D correspondingly.An a...
  • Guard_Mine
  • Guard_Mine
  • 2015年03月21日 11:14
  • 894

Codeforces Round #346 (Div. 2) D. Bicycle Race(点在多边形内部)

题意: 判断多少个转点会有危险? 思路: 这个题有一万种做法,因为数据较小! 1. O(1)O(1) 公式 (n−4)/2(n - 4) / 2 2. O(n)O(n) 扫一遍点,...
  • u014686462
  • u014686462
  • 2016年03月31日 13:27
  • 208

【Codeforces Round 263 (Div 2)A】【水题 认真读题】Appleman and Easy Task 每个点的相邻o是否都为偶数

Appleman and Easy Task time limit per test 1 second memory limit per test 256 megabytes ...
  • snowy_smile
  • snowy_smile
  • 2016年03月21日 15:14
  • 249

【Codeforces Round 276 (Div 2)D】【数论 正难则反 枚举倍数 二分 O(nlogn)】Maximum Value n个数大数mod小数找最大余数

D. Maximum Value time limit per test 1 second memory limit per test 256 megabytes i...
  • snowy_smile
  • snowy_smile
  • 2015年12月08日 22:08
  • 486
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【O(nlgn)判定点在凸包内】Codeforces Round #113 (Div. 2) B
举报原因:
原因补充:

(最多只允许输入30个字)