Buaa 1033 Easy Problem(三分问题)

Easy Problem


时间限制:1000 ms  |  内存限制:65536 KB
描述
In this problem, you're to calculate the distance between a point P(xp, yp, zp) and a segment (x1, y1, z1) ? (x2, y2, z2), in a 3D space, i.e. the minimal distance from P to any point Q(xq, yq, zq) on the segment (a segment is part of a line).


输入
The first line contains a single integer T (1 ≤ T ≤ 1000), the number of test cases. Each test case is a single line containing 9 integers xp, yp, zp, x1, y1, z1, x2, y2, z2. These integers are all in [-1000,1000].


输出
For each test case, print the case number and the minimal distance, to two decimal places.


样例输入
3
0 0 0 0 1 0 1 1 0
1 0 0 1 0 1 1 1 0
-1 -1 -1 0 1 0 -1 0 -1
样例输出
Case 1: 1.00
Case 2: 0.71
Case 3: 1.00题意为在一条线段上找到一点,与给定的P点距离最小。很明显的凸性函数,用三分法来解决。

Calc函数即为求某点到P点的距离。

#include<iostream>
#include<cstdlib>
#include<stdio.h>
#include<memory.h>
#include<math.h>
#define eps 1e-8
using namespace std;

struct point
 {
     double x,y,z;
 };
 point l,r,p;
  point MID(point a,point b)
{
    point k;
  k.x=(a.x+b.x)*0.5;
  k.y=(a.y+b.y)*0.5;
  k.z=(a.z+b.z)*0.5;
  return k;
}
double dist(point a,point b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
}
int sgn(double a)
{
    return (a>eps)-(a<-eps);
}
point work()
{
    point mid,midmid;
   while(sgn(dist(l,r))>0)
   {
     mid=MID(l,r);
  midmid=MID(mid,r);
     if(dist(mid,p)<dist(midmid,p))
     r=midmid;
     else
     l=mid;
   }
   return r;
}
int main()
{
    int t,i,j,k,cas=1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf",&p.x,&p.y,&p.z);
        scanf("%lf%lf%lf",&l.x,&l.y,&l.z);
        scanf("%lf%lf%lf",&r.x,&r.y,&r.z);
        l=work();
        printf("Case %d: %.2lf\n",cas++,dist(l,p));
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BUAA电路分析答案指的是关于北京航空航天大学电路分析课程中的问题的解答。电路分析是电子工程中非常重要的课程,它涵盖了电路基础理论和分析方法,学习者需要掌握电路元件的特点、电流电压关系、电路定律等知识,并能够应用这些理论和方法分析和解决复杂电路问题BUAA电路分析答案可能包括以下方面: 1. 电路基本理论:回答关于电路的基本概念、电流电压关系、电压控制电流和电流控制电压的基本理论问题。 2. 电路元件分析:回答关于电阻、电容和电感等元件的特点、性质和应用的问题,以及如何计算和分析这些元件在电路中的作用。 3. 电路定律:回答关于欧姆定律、基尔霍夫定律和诺顿定律等电路定律的问题,解释它们的应用场景和计算方法。 4. 电路分析方法:回答关于串并联电路、节点电压法、网孔电流法等电路分析方法的问题,详细解释如何应用这些方法进行电路分析和求解。 5. 直流电路分析:回答关于由直流电源和直流元件组成的电路的分析问题,涉及电压分压、电流分流、电路功率和电路效率等方面。 6. 交流电路分析:回答关于交流电源和交流元件的电路分析问题,包括复数形式的电压和电流、交流电路的频率响应和相位关系等内容。 总之,BUAA电路分析答案是关于北京航空航天大学电路分析课程中相关问题的详细解答,涵盖了电路基本理论、电路元件分析、电路定律、电路分析方法以及直流电路和交流电路分析等方面的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值