Red de conocimiento informático - Material del sitio web - ¡Esperando en línea, buscando urgentemente una pregunta sobre programación en lenguaje C! ! ! La respuesta correcta le enviará directamente un sobre rojo de WeChat de 20 yuanes.

¡Esperando en línea, buscando urgentemente una pregunta sobre programación en lenguaje C! ! ! La respuesta correcta le enviará directamente un sobre rojo de WeChat de 20 yuanes.

Problema de casco convexo. Geometría computacional. #include

#include

struct?node

{

¿largo?largo? x,y;

}a[100005],b[100005];

long?long?mul(nodo?p1,nodo?p2,nodo?p3)

{

¿regresar?(p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1 .y);

}

int?main()

{

int?n,m,i,baja,alta ,mid,flag;

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

{

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

scanf("%lld%lld",&a[i].x,&a[i].y);

scanf("%d",&m );

for(i=0;i

scanf("%lld%lld",&b[i].x,&b[i].y );

bandera=0;

for(i=0;i

{

si(mul (a[0],a[1],b[i])>=0||mul(a[0],a[n-1],b[i])<=0)

{

flag=1;

goto?loop;

}

low=2;?high=n-1;

mientras(bajo

{

medio=(bajo+alto)>>1;

if(mul( a[0],a[medio],b[i])>0)

alto=medio;

else?bajo=medio+1;

}

if(mul(a[bajo],a[bajo-1],b[i])<=0)

{

marca =1;

ir a?bucle;

}

}

bucle:if(bandera)

printf("NO\n"); else?printf("SÍ\n");

}

return?0;

}

Publicado desde blogs.com/dream-wind/archive/2012/05/23/2514694.html

También incluido en la descripción del algoritmo.