题目链接:hdu 5017 Ellipsoid
题目大意:给定一个面的方程,问在面上距离原点的最小值。
解题思路:三分套三分,先三分x,对于每个x,三分y,求出的最优解作为当前x的值。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const double INF = 10000;
const double eps = 1e-9;
double a, b, c, d, e, f;
double get(double A, double B, double C) {
if (B * B - 4 * A * C < eps)
return INF;
return (sqrt(B * B - 4 * A * C) - B) / (2 * A);
}
double func (double x, double y) {
double z = get(c, e * x + d * y, a * x * x + b * y * y + f * x * y - 1);
return x * x + y * y + z * z;
}
double search (double x) {
double l = -INF, r = INF;
for (int i = 0; i < 200; i++) {
double ll = l + (r - l) / 3;
double rr = r - (r - l) / 3;
if (func(x, ll) > func(x, rr))
l = ll;
else
r = rr;
}
return func(x, l);
}
double solve (double l, double r) {
for (int i = 0; i < 200; i++) {
double ll = l + (r - l) / 3;
double rr = r - (r - l) / 3;
if (search(ll) > search(rr))
l = ll;
else
r = rr;
}
return sqrt(search(l));
}
int main () {
while (scanf("%lf%lf%lf%lf%lf%lf", &a, &b, &c, &d, &e, &f) == 6) {
printf("%.5lf\n", solve(-INF, INF));
}
return 0;
}
分享到:
相关推荐
HDU图论题目分类
ACM HDU题目分类,我自己总结的大概只有十来个吧
hdu题目分类
其中有pku、hdu、zoj等各大oj的题目分类,pku的oj比较详细一点,按不同算法进行分类,均系从网上自行搜集的。
HDU的1250,主要是利用高精度加法,但是代码有点繁琐,效率不是很高
HDU1059的代码
杭电ACMhdu1163
hdu1001解题报告
hdu 1574 passed sorce
HDU的一题........HDU DP动态规
hdu acm 教案 搜索入门 hdu acm 教案 搜索入门
因为大三了 不弄ACM了 所以这些就删了 删之前希望可以帮到别人
hdu2101AC代码
搜索 dfs 解题代码 hdu1241
hoj 题目详细的分类,方便大家有针对性系统的练习,在ACM方面有更大的进步
hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。
hdu acm 教案 动态规划(1) hdu acm 教案 动态规划(1)
hdu ACM代码 每种算法都有分类 大三了,没有时间弄ACM,这些要删了