POJ 2318 图论入门之判断直线与点的位置关系

Posted ronnielee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2318 图论入门之判断直线与点的位置关系相关的知识,希望对你有一定的参考价值。

POJ 2318

链接(http://poj.org/problem?id=2318

图论入门之判断直线与点的位置关系

#include<bits/stdc++.h>

using namespace std;

struct node
{
    int x1,x2,y1,y2;
}p[5050];

bool is_in(int x,int y,int a)
{
    int x1=p[a].x1;
    int x2=p[a].x2;
    int y1=p[a].y1;
    int y2=p[a].y2;
    int ans=((x1-x)*(y2-y)-(y1-y)*(x2-x));
    return ans>0?true:false;
}

int main() 
{
    int n,m,xl,yl,xr,yr;

    while(scanf("%d",&n),n)
    {

        scanf("%d%d%d%d%d",&m,&xl,&yl,&xr,&yr);

        p[0].x1=xl;
        p[0].x2=xl;
        p[n+1].x1=xr;
        p[n+1].x2=xr;

        for(int i=1;i<=n;i++)
            scanf("%d%d",&p[i].x1,&p[i].x2);

        for(int i=0;i<=n+1;i++)
        {
            p[i].y1=yl;
            p[i].y2=yr;
        }

        int cnt[5050];
        for(int i = 0 ; i < 5050 ; i++)
            cnt[i] = 0;

        while(m--)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            int temp=0;
            while(is_in(x,y,temp))
                temp++;
            //case temp fasle, use temp-1 
            cnt[temp-1]++;
        }
        for(int i=0;i<=n;i++)
            printf("%d: %d
",i,cnt[i]);
        
        cout << endl;
    }
    return 0;
}

从(https://blog.csdn.net/v5zsq/article/details/47102083)转载

以上是关于POJ 2318 图论入门之判断直线与点的位置关系的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1269 Intersecting Lines (判断直线位置关系)

Segments---poj3304(判断直线与线段的位置关系)

POJ 1269 /// 判断两条直线的位置关系

POJ2318判断点在直线哪一侧+二分查找区间

POJ-2318 TOYS(二分)(叉乘)(判断点在直线的哪侧)

POJ-2318 TOYS 计算几何 判断点在线段的位置