zoukankan      html  css  js  c++  java
  • 待解决问题集锦

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=77223#problem/E

    只满足锐角三角形和直角三角形:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <string>
    #include <cmath>
    #define INF 0x3f3f3f3f
    using namespace std;
    int main (){
        int n;
        cin>>n;
        int Coun=1;
        while(n--){
            double x[3],y[3],X,Y;
            for(int i=0;i<3;i++) cin>>x[i]>>y[i];
            cin>>X>>Y;
            printf("Case #%d: 
    ",Coun);
            Coun++;
            double k1,k2,b1,b2,tx,ty;
            
           if(y[0]==y[1])
              k1=1.0e100,b1=(x[0]+x[1])/2;
           else{
               k1=-1/((y[0]-y[1])/(x[0]-x[1]));
               tx=(x[0]+x[1])/2,ty=(y[0]+y[1])/2;
               b1=ty-k1*tx;
           }
    
    
           if(y[0]==y[2])
               k2=1.0e100,b2=(x[0]+x[2])/2;
            else{
               k2=-1/((y[0]-y[2])/(x[0]-x[2]));
               tx=(x[0]+x[2])/2,ty=(y[0]+y[2])/2;
               b2=ty-k2*tx;
           }
    
           cout<<k1<<" "<<b1<<" "<<k2<<" "<<b2<<endl;
           if(k1!=1.0e100&&k2!=1.0e100){
                if(k1==0&&k2==0){
                   double  maxx=max(x[0],x[1]);
                    maxx=max(maxx,x[2]);
                   double  minn=max(x[0],x[1]);
                    minn=max(minn,x[2]);
                    ty=y[0],tx=(maxx-minn)/2;
                }
                else{
                  tx=(b2-b1)/(k1-k2);
                  ty=((b1*k2)-(b2*k1))/(k2-k1);
                }
           }
           else if(k1==1.0e100&&k2==1.0e100){
                   double maxy=max(y[0],y[1]);
                    maxy=max(maxy,y[2]);
                   double minn=max(y[0],y[1]);
                    minn=max(minn,y[2]);
                    ty=y[0],tx=(maxy-minn)/2;
           }
           else if(k1==1.0e100){
            tx=b1;
            ty=k2*tx+b2;
           }
           else if(k2==1.0e100){
            tx=b2;
            ty=k1*tx+b1;
           }
            cout<<tx<<"  "<<ty<<endl;
           string str=sqrt((tx-X)*(tx-X)+(ty-Y)*(ty-Y)) > sqrt((tx-x[0])*(tx-x[0])+(ty-y[0])*(ty-y[0]))? "Safe" :"Danger";
           cout<<str<<endl;
        }
        return 0;
    }
    
    需利用三角关系进行判断:

  • 相关阅读:
    web前端要学哪些?
    angularjs factory,service,provider 自定义服务的不同
    PSP软件开发过程
    Eclipse连接sqlserver体验过程
    在线制作GIF图片项目愿景与范围
    C# Hashtable vs Dictionary 学习笔记
    Unity 工作经历+近期面试经历
    配置文件加载的一个坑
    rabbitmq exchange type
    centos7下nginx添加到自定义系统服务中提示Access denied
  • 原文地址:https://www.cnblogs.com/zswbky/p/5431945.html
Copyright © 2011-2022 走看看