您的位置:首页 > 其它

PC/UVa 110708/10089 Repackaging

2012-03-19 19:32 344 查看
是一个定点是否在图多边形内的问题,具体为什么待续~~~~~

#include <iostream>

#include <cstdio>

#include <cstring>

using namespace std;

#define maxnum 1001

long map[maxnum][3];

long n;

bool repackage()

{

long i,x1,y1,x2,y2;

long a1,b1,a2,b2,x,y;

x1=map[0][0];

x2=map[0][0];

y1=map[0][1];

y2=map[0][1];

for(i=1;i<n;i++)

{

x=map[i][0];

y=map[i][1];

a1=y1*x,b1=y*x1;

a2=y2*x,b2=y*x2;

if(a1==b1)

{

if(x1*x+y1*y<=0)

return true;

}

if(a2==b2)

{

if(x2*x+y2*y<=0)

return true;

}

if(a1<b1)

x1=x,y1=y;

if(a2>b2)

x2=x,y2=y;

if(x1==x2&&y1==y2)

return true;

if(y1*x2==y2*x1)

if(y1*y2+x1*x2<=0)

return true;

if(y1*x2<y2*x1)

return true;

}

return false;

}

int main()

{

int i;

while(scanf("%ld",&n)!=EOF)

{

if(n==0) break;

memset(map,0,sizeof(map));

for(i=0;i<n;i++)

{

scanf("%ld%ld%ld",&map[i][0],&map[i][1],&map[i][2]);

map[i][0]-=map[i][2];

map[i][1]-=map[i][2];

}

if(repackage())

printf("Yes\n");

else

printf("No\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: