日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

zoj 3386 Trick or Treat 三分 求最大值的 最小值

發(fā)布時間:2025/3/19 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zoj 3386 Trick or Treat 三分 求最大值的 最小值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目來源:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3963

題意: ?給定 N 個不同的點, 求在x軸上的 一點, ?使 這點到N個點的 距離 最大 的 最小值。

f(x) = ?max(i){ (xi - x) ^2 + yi ^2 }

求 x ?使 ?min(f(x)) , f(x)為凹函數(shù) ? , ?采用三分的形式

代碼如下:

const double EPS = 1e-10 ; const int Max_N = 50005 ; int n; double add(double a, double b){return (fabs(a + b) < EPS * (fabs(a) + fabs(b))) ? 0 : (a + b) ; } struct Point {double x, y;double dist(double a){return sqrt(add((x - a)*(x -a) ,(y)*(y) )) ;} }; Point pt[Max_N] ; double f(double x){int i ;double Max = 0 ;for( i = 0 ; i < n; i++){Max = pt[i].dist(x) > Max ? pt[i].dist(x) : Max ;}return Max ; } double tri_search(){double Mid, Midmid , L, R ;L = -400000.0 , R = 400000.0 ;while(L + EPS < R){Mid = (L + R) * 0.5 ;Midmid = (Mid + R) *0.5 ;if(f(Mid) <= f(Midmid ) )R = Midmid ;else L = Mid ;}return L ; } int main(){while(scanf("%d", &n) && n){for(int i =0 ; i < n ; i++)scanf("%lf%lf" , &pt[i].x ,&pt[i].y ) ;double xx = tri_search() ;double Max = f(xx) ;printf("%.9lf %.9lf\n" , xx + EPS , Max) ;} }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zn505119020/p/3729693.html

總結(jié)

以上是生活随笔為你收集整理的zoj 3386 Trick or Treat 三分 求最大值的 最小值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。