围困

该题用的知识是:如果点在三角形内,则这个点为顶点的三个角之和为360度。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double x1,Y1,x2,y2,x3,y3,x,y;
double length( double a1,double b1,double a2,double b2 )
{
    return  ( a1-a2 )*( a1-a2 )+( b1-b2 )*( b1-b2 ) ;       
}
double area( double a1,double b1,double a2,double b2,double a3,double b3 )
{
    double c1,c2,c3,p;
    c1=length( a1,b1,a2,b2 );
    c2=length( a1,b1,a3,b3 );
    c3=length( a3,b3,a2,b2 );
    double t=sqrt( c2*c3 ); 
    return acos( (c2+c3-c1)/( 2*t ) );
}
bool judge( )
{
   double s1,s2,s3,s4;
   s2=area( x1,Y1,x2,y2,x,y );
   s3=area( x1,Y1,x3,y3,x,y );
   s4=area( x2,y2,x3,y3,x,y ); 
   double t=( s2+s3+s4 );
 //  printf( "%lf\n",t );
 //  printf( "%lf\n",acos( -1 ) );
   if( fabs( 2*acos( -1 )-t )<=1.0e-8  )
     return true;
   return false ;   
}
int main()
{  
    while( scanf( "%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&Y1,&x2,&y2,&x3,&y3,&x,&y )==8 )
    {
        if( judge(  ) )
           printf( "Die\n" );
        else printf( "Live\n" );       
    }    
}

 

围困
 
Time Limit: 1000 MS   Memory Limit: 65536 K
Total Submit: 20 (12 users)
 
  Accepted Submit: 11 (11 users)
 
  Special Judge: No
 
 
 
 
Description
 
 
 
 

Leyni是一名猎人,一天他在草原中散步,遇到了三只老狼,三只老狼围成了一个三角形,如果Leyni在这个三角形中,那么他必死无疑,否则他还有一线生机。
现在已知三只老狼的坐标和Leyni的坐标,请问,Leyni还有活下去的机会吗?

 
 
 
 
 
 
Input
 
 
 
 

本题有多组测试数据,对于每组测试数据:
第一行,含有4对坐标,x1, y1, x2, y2, x3, y3, xLeyni, yLeyni。前3对坐标表示三只老狼的位置,最后一对表示Leyni的坐标。坐标的范围在[-10000, 10000],且都是整数。
注:输入数据保证Leyni不会在三角形的边上。

 
 
 
 
 
 
Output
 
 
 
 

对于每组测试数据:
第一行,如果Leyni还有一线生机,那么请输出Live,否则请输出Die

 
 
 
 
 
 
Sample Input
 
 
 
 
-1 -1 1 -1 0 1 0 0
-1 -1 1 -1 0 1 10 10
 
 
 
 
 
 
Sample Output
 
 
 
 
Die
Live
posted @ 2011-11-20 20:46  wutaoKeen  阅读(263)  评论(0)    收藏  举报