补题系列之西安网络赛1011

题目大意:给定一个椭球: 求它到原点的最短距离.

思路:

对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为min(a,b,c)

所以我们需要把原方程化为标准型。

这时候线代就排上用场了,注意到原方程是一个二次型。

化为标准型 1/(k1)*x^2+1/(k2)*y^2+1/(k3)*z^2=1 后  min(k1,k2,k3)即为答案

而这里的1/k1,1/k2,1/k3 就是二次型矩阵的特征值

如何求特征值呢?

我们写出二次型矩阵

|   a    f/2   e/2  |

T=   |   f/2   b    d/2  |

|   e/2 d/2   c    |   由行列式| λE-T|=0 可以得到一个关于λ的一元三次方程,令 k=1/λ,

把它记为  a*k^3+b*k^2+c*k+d=0(注意这里的a,b,c,d都是关于原方程中a,b,c,d的多项式)

解这个一元三次方程,可以使用求根公式:盛金公式(其他方法我还不会)

分此四种情况讨论求解即可。。

代码:

#include <stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
#define MAXN 10000
const double p=sqrt(3.0);
const double inf=0.0000001;
double min(double a,double b,double c)
{
return min(a,min(b,c));
}
int main()
{ double aa,bb,cc,dd,ee,ff;
double A,B,C,a,b,c,d;
while(scanf("%lf%lf%lf%lf%lf%lf",&aa,&bb,&cc,&dd,&ee,&ff)!=EOF)
{
double ans;
a=*aa*bb*cc+dd*ee*ff-bb*ee*ee-aa*dd*dd-ff*ff*cc;
b=*aa*bb+*bb*cc+*aa*cc-ee*ee-ff*ff-dd*dd;
c=*aa+*bb+*cc;
d=4.0;
A=b*b-*a*c;
B=b*c-*a*d;
C=c*c-*b*d;
double q=B*B-*A*C;
if(fabs(A-B)<inf&&fabs(A)<inf)
{
printf("%.8lf\n",sqrt(fabs(-c/b)));
continue;
}
if(fabs(B*B-*A*C)<inf)
{
double k=B/A;
ans=min(fabs(-b/a+k),fabs(-k/));
printf("%.8f\n",sqrt(ans));
continue;
}
if(q>)
{
double x=A*b+*a*((-B+sqrt(q))/);
double y=A*b+*a*((-B-sqrt(q))/);
double t1= x>?pow(x,1.0/):-(pow(fabs(x),1.0/));
double t2= y>?pow(y,1.0/):-(pow(fabs(y),1.0/));
ans=(-b-t1-t2)/(*a);
printf("%.8f\n",sqrt(fabs(ans)));
continue;
}
double t=acos((*A*b-*a*B)/(*sqrt(A*A*A)))/;
ans=min(fabs((-b-*sqrt(A)*cos(t))/(*a)),fabs(((-b)+sqrt(A)*(cos(t)+p*sin(t)))/(*a)),fabs(((-b)+sqrt(A)*(cos(t)-p*sin(t)))/(*a)));
printf("%.8f\n",sqrt(ans)); } return ;
}

hdu5017:补题系列之西安网络赛1011的更多相关文章

  1. hdu 5017 Ellipsoid(西安网络赛 1011)

    Ellipsoid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  2. HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)

    Walk Through Squares Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Oth ...

  3. HDU 5009 Paint Pearls(西安网络赛C题) dp+离散化+优化

    转自:http://blog.csdn.net/accelerator_/article/details/39271751 吐血ac... 11668627 2014-09-16 22:15:24 A ...

  4. 异或运算(2014西安网络赛H题)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5014 题意:给出范围N,给出0-N的一个排列a.让你求出另外一个排列b,使 t = a1 ^ b1 + a ...

  5. 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

    自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模 ...

  6. 2017 icpc 西安网络赛

    F. Trig Function 样例输入 2 0 2 1 2 2 样例输出 998244352 0 2 找啊找啊找数列和论文.cosnx可以用切比雪夫多项式弄成(cosx)的多项式,然后去找到了相关 ...

  7. 2017西安网络赛B_Coin

    样例输入 2 2 1 1 3 1 2 样例输出 500000004 555555560 思路: n重伯努利实验概率分布题. 设q=1-p,p为事件概率. Y为出现偶数次的概率. 所以  Y=1/2*( ...

  8. 2017西安网络赛C_SUM

    样例输入 1 1 样例输出 89999999999999999999999999 题意:利用上述公式,求出k的值 思路:找规律,找规律发现233个9,无论x是何值永远成立 (这种规律题尽量就不用跟队友 ...

  9. 2017西安网络赛 F

    f(cos(x))=cos(n∗x) holds for all xx. Given two integers nn and mm, you need to calculate the coeffic ...

随机推荐

  1. Eclipse Tomcat : Project facet Java version 1.7 is not supported.

    在Eclipse打开一个项目,并用Tomcat运行时,报错:Project facet Java version 1.7 is not supported. 大致的截图如下: "项目中的jd ...

  2. Python进阶(面向对象编程基础)(四)

    1.方法也是属性 我们在 class 中定义的实例方法其实也是属性,它实际上是一个函数对象: class Person(object): def __init__(self, name, score) ...

  3. 初学Pexpect

    概述 Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块 ...

  4. 【VS2015正式版下载】Visual Studio 2015 正式版开放下载 Visual Studio 2015 神key

    说明: 微软定于2015年7月20日发布Visual Studio 2015正式版,目前其官方网站已经提供正式版本的下载. 可在https://www.visualstudio.com/en-us/d ...

  5. DNN7网站系统需求及部署指南详解

    此安装指南适用于DNN6.x和DNN7.x在本地测试及主机的安装.最近QQ群里不少朋友问我关于DotNetNuke的安装和运行的问题. 为了让大家更清楚地了解DNN的安装方式,我在这里对DotNetN ...

  6. 随机获取oracle数据库中的任意一行数据(rownum)

    最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查: 看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候, 我们就可 ...

  7. jQuery自学笔记(四):jQuery DOM节点操作

    获得和设置内容:text( ).html( ) 以及 val( ) text( ) - 设置或返回所选元素的文本内容 html( ) - 设置或返回所选元素的内容(包括 HTML 标记) val( ) ...

  8. PHP数据过滤

    1.php提交数据过滤的基本原则  1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定了.其实在涉及到变量取值时,intval ...

  9. PHP学习系列(1)——字符串处理函数(2)

    6.chunk_split() 函数把字符串分割为一连串更小的部分.本函数不改变原始字符串. 语法:chunk_split(string,length,end) 参数: string——必需.规定要分 ...

  10. Excel文件数据保存到SQL中

    1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...