hdu5017:补题系列之西安网络赛1011
补题系列之西安网络赛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的更多相关文章
- hdu 5017 Ellipsoid(西安网络赛 1011)
Ellipsoid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 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 ...
- HDU 5009 Paint Pearls(西安网络赛C题) dp+离散化+优化
转自:http://blog.csdn.net/accelerator_/article/details/39271751 吐血ac... 11668627 2014-09-16 22:15:24 A ...
- 异或运算(2014西安网络赛H题)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5014 题意:给出范围N,给出0-N的一个排列a.让你求出另外一个排列b,使 t = a1 ^ b1 + a ...
- 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式
自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模 ...
- 2017 icpc 西安网络赛
F. Trig Function 样例输入 2 0 2 1 2 2 样例输出 998244352 0 2 找啊找啊找数列和论文.cosnx可以用切比雪夫多项式弄成(cosx)的多项式,然后去找到了相关 ...
- 2017西安网络赛B_Coin
样例输入 2 2 1 1 3 1 2 样例输出 500000004 555555560 思路: n重伯努利实验概率分布题. 设q=1-p,p为事件概率. Y为出现偶数次的概率. 所以 Y=1/2*( ...
- 2017西安网络赛C_SUM
样例输入 1 1 样例输出 89999999999999999999999999 题意:利用上述公式,求出k的值 思路:找规律,找规律发现233个9,无论x是何值永远成立 (这种规律题尽量就不用跟队友 ...
- 2017西安网络赛 F
f(cos(x))=cos(n∗x) holds for all xx. Given two integers nn and mm, you need to calculate the coeffic ...
随机推荐
- asdasd
adasdasd asdasd asdasd asd
- JavaScript 类私有方法的实现
一:将私有方法移出模块,因为模块内部的所有方法都是对外可见的. class Widget { foo (baz) { bar.call(this, baz); } // ... } function ...
- javascript实现限制上传文件的大小
目录 基本思路 示例 [一].基本思路 在FireFox.Chrome浏览器中可以根据document.getElementById(“id_file”).files[0].size 获取上传文件的大 ...
- 几款命令行工具(CMD)增强软件
如果经常要与 命令行工具(CMD)打交道,推荐几款工具来增强与替代 Windows 默认的 CMD. 1.PowerCMD 优点:老牌软件,功能强大,支持自定义配色方案,目前最新版本为 2.2: 缺点 ...
- POJ 3356 AGTC(最小编辑距离)
POJ 3356 AGTC(最小编辑距离) http://poj.org/problem?id=3356 题意: 给出两个字符串x 与 y,当中x的长度为n,y的长度为m,而且m>=n.然后y能 ...
- myPagination5.0 分页简单实例
记得最開始做分页採用的ThreadLocal对象,后面发现有有了更简便的方法,直接使用插件,不但简单.并且高效! 採用的版本号为myPagination5.0,可以解决client多条件无刷新动态分页 ...
- 常用语言api语法Cheat Sheet
http://overapi.com/jquery/ OverAPI.com Python jQuery NodeJS PHP Java Ruby Javascript ActionScript CS ...
- ProtoBuf 的java使用
碰巧用到Proto,算是笔记吧算是笔记吧, windows : 1,两个文件:proto.exe, protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个pro ...
- (转)url重写
使用URLRewriter.dll后,根本不需要使用任何代码,我之前做的项目就是用的做URL重写的,其实不是进化,其实表面上看是.html扩展名而已,当然你还可以用其他的任意扩展名下面是你的配置 &l ...
- 如何让MyEclispe中英文切换
我们通过网上的一些汉化办法汉化了我们的MyEclipse,可是我们有时候想切回英文版怎么办? 方法一:我们可以通过修改MyEclipse配置文件的办法来从中文恢复到英文, -Duser.languag ...