【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;
}





















相关文章推荐

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

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

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...

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...

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...

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

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

【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 ...

【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...

Codeforces Round #396(Div. 2)B. Mahmoud and a Triangle【上古时代题】nlogn判断三角形

B. Mahmoud and a Triangle time limit per test 2 seconds memory limit per test 256 megabytes ...

[Codeforces] Round #287 (Div. 2) A、B

507A - Amr and Music 题意:给定一个n和k,分别代表Amr有n种乐器 和 他的最多学习天数k。接下来输入这n种乐器分别需要ai天才能学会。问Amr在这k天最多能学会的乐器数,并且把...

Codeforces Round #344 (Div. 2) B. Print Check (模拟)

B. Print Check time limit per test 1 second memory limit per test 256 megabytes input standard...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【O(nlgn)判定点在凸包内】Codeforces Round #113 (Div. 2) B
举报原因:
原因补充:

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