补题系列之西安网络赛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. synchronized 与 Lock 的那点事

    最近在做一个监控系统,该系统主要包括对数据实时分析和存储两个部分,由于并发量比较高,所以不可避免的使用到了一些并发的知识.为了实现这些要求,后台使用一个队列作为缓存,对于请求只管往缓存里写数据.同时启 ...

  2. 通过数组初始化链表的两种方法:指向指针的引用node *&tail和指向指针的指针(二维指针)node **tail

    面试高频题:单链表的逆置操作/链表逆序相关文章 点击打开 void init_node(node *tail,char *init_array) 这样声明函数是不正确的,函数的原意是通过数组初始化链表 ...

  3. Python - SQLAlchemy之连表操作

    ORM的两种创建方式 数据库优先:指的是先创建数据库,包括表和字段的建立,然后根据数据库生成ORM的代码,它是先创建数据库,再创建相关程序代码 代码优先:就是先写代码,然后根据代码去生成数据库结构. ...

  4. C#。5 函数 类

    函数:能够独立完成某个功能的模块.          好处:1.结构更清析(编写.维护方便 ).2.代码重用.3.分工开发.          四要素:名称,输入(参数),输出(返回的类型),加工(函 ...

  5. OD: Big_Endian vs Little_Endian

    经调试,Windows 下为 Little_Endian,OD 中堆栈数据区的 (dword)0xAABB0102,0x02 存储在低地址,0x01 存储在高地址. 内容来自:http://blog. ...

  6. Asp.Net WebAPI传递json对象、后台手动接收参数

    1.前台代码 /* * 跨域请求Post * 1个对象参数,后台JObject接受 */ $.post(apiUrl.getOne("PostFourth"), { name: } ...

  7. partial修饰符,可以让同类命名空间下出现重名

    public partial class Person { } public partial class Person { } partial修饰符,可以让同类命名空间下出现重名,两个类其实是一个类, ...

  8. 概率dp小结

    好久之前学过,记得是一次亚洲区的前几天看了看概率dp,然后亚洲区就出了一道概率dp,当时虽然做上了,但是感觉有很多地方没懂,今天起早温习了一下,觉得很多地方茅塞顿开,果然学习的话早上效果最好了. 首先 ...

  9. Fedora22没有i18n文件

    今天想修改Fedora22的系统语言,发现/etc/sysconfig/没有i18n 解决方法: dnf install system-config-language.noarch -y system ...

  10. Guava 15新特性介绍

    原文:http://www.javacodegeeks.com/2013/10/guava-15-new-features.html Guava 是众所周知的google出品的开源工具包,十分好用,本 ...