2 条题解

  • 1
    @ 2022-12-29 8:53:52
    #include <iostream>
    #include <cmath>
    using namespace std;
    const double eps=0.00001;
    int _x1,_y1,_x2,_y2,_x3,_y3,_x4,_y4;
    double ts,d1,d2,d3;
    char a;
    inline double dis(int _x1,int _y1,int _x2,int _y2){
    	return sqrt((_x2-_x1)*(_x2-_x1)+(_y2-_y1)*(_y2-_y1));
    }
    inline double S(double a,double b,double c){
    	double p=(a+b+c)/2;
    	return sqrt(p*(p-a)*(p-b)*(p-c));
    }
    inline double _S(int _x1,int _y1,int _x2,int _y2,int _x3,int _y3){
    	return S(dis(_x1,_y1,_x2,_y2),dis(_x2,_y2,_x3,_y3),dis(_x3,_y3,_x1,_y1));
    }
    int main(void){
    	cin>>a>>_x1>>a>>_y1>>a>>a>>_x2>>a>>_y2>>a>>a>>_x3>>a>>_y3>>a>>a>>_x4>>a>>_y4>>a;
    	if((_x4==_x1&&_y4==_y1)||(_x4==_x2&&_y4==_y2)||(_x4==_x3&&_y4==_y3)){
    		cout<<"4";
    		return 0;
    	}
    	d1=dis(_x1,_y1,_x2,_y2);
    	d2=dis(_x2,_y2,_x3,_y3);
    	d3=dis(_x1,_y1,_x3,_y3);
    	if(fabs(dis(_x4,_y4,_x1,_y1)+dis(_x4,_y4,_x2,_y2)-d1)<=eps||fabs(dis(_x4,_y4,_x2,_y2)+dis(_x4,_y4,_x3,_y3)-d2)<=eps||fabs(dis(_x4,_y4,_x1,_y1)+dis(_x4,_y4,_x3,_y3)-d3)<=eps){
    		cout<<"3";
    		return 0;
    	}
    	ts=_S(_x1,_y1,_x2,_y2,_x3,_y3);
    	if(fabs(_S(_x1,_y1,_x2,_y2,_x4,_y4)+_S(_x2,_y2,_x3,_y3,_x4,_y4)+_S(_x1,_y1,_x3,_y3,_x4,_y4)-ts)<=eps){
    		cout<<"1";
    		return 0;
    	}else{
    		cout<<"2";
    		return 0;
    	}
    }
    
    • 0
      @ 2022-7-14 19:56:30
      #include<iostream>
      #include<cmath>
      using namespace std;
      int s,t,u,v,w,x,y,z;
      char ch;
      double m(int a,int b,int c,int d,int e,int f)//海伦公式算三角形面积
      {
          double x,y,z,p;
          x=sqrt((a-c)*(a-c)+(b-d)*(b-d));
          y=sqrt((a-e)*(a-e)+(b-f)*(b-f));
          z=sqrt((c-e)*(c-e)+(d-f)*(d-f));
          p=(x+y+z)/2;
          return sqrt(p*(p-x)*(p-y)*(p-z));
      }
      int main()
      {
          cin>>ch>>s>>ch>>t>>ch;//点A
          cin>>ch>>u>>ch>>v>>ch;//点B
          cin>>ch>>w>>ch>>x>>ch;//点C
          cin>>ch>>y>>ch>>z>>ch;//点D
          double abc,abd,acd,bcd;//几个三角形的面积
          abc=(int)m(s,t,u,v,w,x)*100,abd=(int)m(s,t,u,v,y,z)*100,acd=(int)m(s,t,w,x,y,z)*100,bcd=(int)m(u,v,w,x,y,z)*100;//吐槽本题精度问题= =
          if((s==y&&t==z)||(u==y&&v==z)||(w==y&&x==z))
          {
              cout<<4;    //4
              return 0;
          }
          if(abd+acd+bcd>abc)
          {
              cout<<2;    //2
              return 0;
          }
          else
          {
              if(!abc||!abd||!acd||!bcd)
              {
                  cout<<3;    //判断3
                  return 0;
              }
              cout<<1;//1
          }
      }
      
      • 1

      信息

      ID
      356
      时间
      1000ms
      内存
      125MiB
      难度
      3
      标签
      递交数
      3
      已通过
      2
      上传者