題意:
讓你找到乙個最小的圓柱去覆蓋所有的豎直的線段..
思路:三分,直接去三分他的半徑,因為想下,如果某個半徑是最優值,那麼
從r(max->now->min)是的 v肯定是先增大然後減小再增大,也就是滿足凹凸性,所以可以三分,三分的時候根據當前的半徑我們可以列舉每乙個點,通過相似三角形去找到最大的h作為當前的h,然後根據v三分搜尋就行了,對於low的初始值我賦的是 x_y平面上離原點距離最遠的那個的距離+ 1e-9 ,防止被除數是0的情況.其他的沒啥就是簡單的三分,如果你想卡排名就不斷縮小eps知道wa為止.
#include#include#define eps 1e-9#define n 10000 + 100
doublepi=acos(-1.0);
typedef struct
node;node node[n];
doubleq_h(
doubler,
intn)
returnmax;
}doubleq_v(
doubler,
doubleh,
intn)
voidsolve(
intn,
doubleloww)
printf("%.4lf %.4lf\n",h1,mid);
return;}
intmain
()solve(n,ma+eps);
}return0;
}
三分求極值
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述 這一次我們就簡單一點了,題目在此 在直角座標系中有一條拋物線y ax 2 bx c和乙個點p x,y 求點p到拋物線的最短距離d。輸入第1行 5個整數a,b,c,x,y。前三個數構成拋物線的引數,後兩個數x,y表示p點座...
三分求極值
題目傳送 hihocoder 1142 三分 三分求極值 二分適用於單調函式,對於需要逼近的區間做二等分,來求解某點的值等。三分適用於凸形函式,對於需要逼近的區間做三等分。ac include include include include include include include inclu...
hdu 3400 Line belt 三分套三分)
題意 在乙個二維空間中給出兩條線段ab,cd,線段ab,cd上的運動速度分別為p,q。在這兩條線段之外的空間上運動的速度為r。求從a到d的最短時間。思路 ps 在這種求解方法中,中間運用了比較多的除法,導致精度損失,所以再開方前加乙個eps,防止開方後的值比真實值小。include include ...