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 ...
随机推荐
- 小结OC中Retain cycle(循环引用)
retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于 ...
- 一、spark 数据类型(Data Types)
Data Types - MLlib(数据类型) MLlib支持存储在单机上的局部向量和局部矩阵,也可以支持通过一个或多个RDD(可伸缩数据集)表示的分布式矩阵.局部向量和局部矩阵是用作公 ...
- Windows下oracle打补丁步骤
1.Oracle官网下载对应的补丁文件(需要oracle支持账号才能下载) 2.设置ORACLE_HOME set oracle_home=F:\oracle\product\11.2.0\dbhom ...
- (转)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 ...
- C++编程规范之17:避免使用“魔数”
摘要: 程序设计并非魔术,所以不要故弄玄虚,要避免在代码中使用诸如42和3.1415926这样的文字常量.它们本身没有提供任何说明,并且因为增加了难于检测的重复而使维护更加复杂.可以用符号名称和表达式 ...
- Jmeter接口测试-badboy录制脚本(二)
1.脚本录制,采用badboy进行录制,操作步骤很简单 2.badboy简介: Badboy是一款免费WEB自动化测试工具. 官方下载地址:http://www.badboy.com.au badbo ...
- swift 实现漂亮的粒子效果CAEmitterLayer
一些粒子效果 我们经常会在一些游戏或者应用中看到一些炫酷的粒子效果,我们在iOS中也能很轻松的搞一些粒子效果 我们本次做得是一个下雪的效果,看下效果图 源码地址: https://github.com ...
- ubuntu安装python3.5
ubuntu14.04系统会自带python2.7,请不要卸载它.不同版本的Python可以共存在一个系统上. 卸载之后,桌面系统会被影响. (1)sudo add-apt-repository pp ...
- [MVC4-基礎] 從資料庫取值顯示在DropDownList中
剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...
- js 全国城市3级联动
js /* * 全国三级城市联动 js版 */ function Dsy(){ this.Items = {}; } Dsy.prototype.add = function(id,iArray){ ...