zoukankan      html  css  js  c++  java
  • 过一点求对一个直线的垂足

    链接:https://ac.nowcoder.com/acm/contest/86/B

    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    Special Judge, 64bit IO Format: %lld

    题目描述

    Et´ereoEte´reo 开始涉猎几何领域了。他现在正在研究小马喝水问题。
    众所周知,这个问题中有一匹口渴的小马,一条笔直的河,以及小马的家。小马需要去河边喝水,然后再去家里。它需要走最短的路径。

    解决这个问题也很简单,其中有一个步骤是要做小马家关于河水的对称点。
    Et´ereoEte´reo 正对此感到一些烦恼。他不会做这个。他想请你帮他作一条过小马家且垂直于河水的线,然后告诉 Et´ereoEte´reo 垂足的位置。

    输入描述:

    第一行一个整数 TT ,表示 Et´ereoEte´reo 的询问个数。
    接下去 TT 行,每行 66 个实数 Px,Py,Ux,Uy,Vx,VyPx,Py,Ux,Uy,Vx,Vy,表示小马家在点 P(Px,Py)P(Px,Py) ,河水为直线 L=[U(Ux,Uy),V(Vx,Vy)]L=[U(Ux,Uy),V(Vx,Vy)]

    输出描述:

    输出共 TT 行,每行两个实数 Qx,QyQx,Qy, 表示答案垂足点的坐标 QQ。 
    当你的答案与标准输出的误差小于 10510−5 时,视为答案正确。
    示例1

    输入

    复制
    3
    0 1 0 0 1 1
    2.13 -6.89 1.78 1.20 -7.73 0.56
    3.473 -4.326 -4.851 -0.819 2.467 -2.729

    输出

    复制
    0.5000000 0.5000000
    1.5864392 1.1869738
    3.7990750 -3.076672

    备注:

    1T5001≤T≤500
    105Px,Py,Ux,Uy,Vx,Vy105−105≤Px,Py,Ux,Uy,Vx,Vy≤105

    分析:这个题我们可以直接用两点求直线的一般式AX+BY+C=0,并由此得其垂线系为BX-AY+M=0;
    由两点求一般式的方法为:
    A=y2-y1
    B=x2-x2
    m=x2*y1-x1*y2
    先用公式求出AB,再将AB带入第一个公式求M,在算两线交点即可,属于计算几何入门题
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int inf=1<<30;
     4 typedef long long ll;
     5 const double pi=acos(-1);
     6 const int mod=1e9+7;
     7 const int maxn=1e5+1;
     8 int a[maxn];
     9 int main(){
    10     int T;scanf("%d",&T);
    11     while(T--){
    12         double x,y,ux,uy,vx,vy;scanf("%lf%lf%lf%lf%lf%lf",&x,&y,&ux,&uy,&vx,&vy);
    13         double k=(vy-uy)/(vx-ux);
    14         double A,B,c;
    15         A=vy-uy,B=ux-vx,c=vx*uy-ux*vy;
    16         double yy,xx,m;
    17         m=A*y-B*x;
    18         double res=(m*A-B*c)/(A*A+B*B);
    19         printf("%.5lf %.5lf
    ",A/B*res-m/B,(m*A-B*c)/(A*A+B*B));
    20     }
    21     return 0;
    22 }
     
  • 相关阅读:
    PHP加密解密函数
    动态生成的dom元素如何绑定事件
    Delphi水晶横向竖向打印
    Delphi关键词
    Laravel进行数据库迁移(migration)
    如何开始使用Laravel
    PHP基础之如何调试PHP程序(HBuilder)
    PHP基础之搭建WAMP环境
    一些面试题
    进程管理
  • 原文地址:https://www.cnblogs.com/qingjiuling/p/10361791.html
Copyright © 2011-2022 走看看