补题系列之西安网络赛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. 小结OC中Retain cycle(循环引用)

    retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于 ...

  2. 一、spark 数据类型(Data Types)

    Data Types - MLlib(数据类型)       MLlib支持存储在单机上的局部向量和局部矩阵,也可以支持通过一个或多个RDD(可伸缩数据集)表示的分布式矩阵.局部向量和局部矩阵是用作公 ...

  3. Windows下oracle打补丁步骤

    1.Oracle官网下载对应的补丁文件(需要oracle支持账号才能下载) 2.设置ORACLE_HOME set oracle_home=F:\oracle\product\11.2.0\dbhom ...

  4. (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2

    转自:http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2 Upda ...

  5. C++编程规范之17:避免使用“魔数”

    摘要: 程序设计并非魔术,所以不要故弄玄虚,要避免在代码中使用诸如42和3.1415926这样的文字常量.它们本身没有提供任何说明,并且因为增加了难于检测的重复而使维护更加复杂.可以用符号名称和表达式 ...

  6. Jmeter接口测试-badboy录制脚本(二)

    1.脚本录制,采用badboy进行录制,操作步骤很简单 2.badboy简介: Badboy是一款免费WEB自动化测试工具. 官方下载地址:http://www.badboy.com.au badbo ...

  7. swift 实现漂亮的粒子效果CAEmitterLayer

    一些粒子效果 我们经常会在一些游戏或者应用中看到一些炫酷的粒子效果,我们在iOS中也能很轻松的搞一些粒子效果 我们本次做得是一个下雪的效果,看下效果图 源码地址: https://github.com ...

  8. ubuntu安装python3.5

    ubuntu14.04系统会自带python2.7,请不要卸载它.不同版本的Python可以共存在一个系统上. 卸载之后,桌面系统会被影响. (1)sudo add-apt-repository pp ...

  9. [MVC4-基礎] 從資料庫取值顯示在DropDownList中

    剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...

  10. js 全国城市3级联动

    js /* * 全国三级城市联动 js版 */ function Dsy(){ this.Items = {}; } Dsy.prototype.add = function(id,iArray){ ...